+ Start a Discussion
@rajeshdulhai@rajeshdulhai 

Help for writing test class

Hi all,

 

i have an apex class ,

global class TwilioWeeklyScheduleSMS Implements Schedulable
{
    global void execute( SchedulableContext sc )
    {
        ScheduledSMS();
    }
    public void ScheduledSMS()
    {
        String message = 'SMS messages were sent to the following accounts:\n';
        
        List<Account> acc = [SELECT Id, Name, Mobile__c from Account where Weekly_Scheduled_SMS__c = true];
    
        if ( acc.isEmpty() ) return;
       
        Set<String> sendToPhones = new Set<String>();
    
        for ( Account a: acc )
        {
            sendToPhones.add( a.Mobile__c );
            message += a.Name + '\n';
        }    
        TwilioMessageHelper.sendSMSMessage( sendToPhones, 'Test SMS' );


        List<SMS_History__c> list_SMS_Histories = new List<SMS_History__c>();   
        for ( Account a: acc )
        {
            list_SMS_Histories.add
            (   new SMS_History__c
                (   Account__c          = a.Id,
                    Message__c          = 'Test SMS ',
                    Mobile_Number__c    = a.Mobile__c
                )
            );
        }
        insert list_SMS_Histories;
        Messaging.SingleEmailMessage emailMsg = new Messaging.SingleEmailMessage();
        emailMsg.setToAddresses( new List<String>{'rajesh.dulhani@nanostuffs.com' } );
        emailMsg.setSenderDisplayName( 'TwilioSchedule_Weekly_SMS' );
        emailMsg.setSubject( 'SMS Messages Sent' );
        emailMsg.setPlainTextBody( message );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { emailMsg } );
    }
}

 

 

 

i have written the following test code ,

@istest(seeAllData=false)
public class TestTwilioWeeklyScheduledSMS {
    private static testmethod void TestTwilioWeeklyScheduledSMS (){
    
        List<Account> acc = [SELECT Id, Name, Mobile__c from Account where Weekly_Scheduled_SMS__c = true];
        if ( acc.isEmpty() ) return;
       
        TwilioWeeklyScheduleSMS sms  = new TwilioWeeklyScheduleSMS ();
        sms.ScheduledSMS();
        
    }
}

 

i run this test it passed but still the code coverage is 0 % . What should i modify in this test class . please help

 

Thanks

Sagarika RoutSagarika Rout

@istest(seeAllData=false)
public class TestTwilioWeeklyScheduledSMS {
    public static testmethod void TestTwilioWeeklyScheduledSMS (){
    
        List<Account> acc = new list<Account>();
        Account Acc1 = new Account(name = 'Acc1',Weekly_Scheduled_SMS__c = true);
        acc.add(Acc1);
        Account Acc2 = new Account(name = 'Acc2',Weekly_Scheduled_SMS__c = true);
        acc.add(Acc2);
        
        Insert acc;
        
        
        if ( acc.isEmpty() ) return;
       
        TwilioWeeklyScheduleSMS sms  = new TwilioWeeklyScheduleSMS ();
        sms.ScheduledSMS();
        
        List<SMS_History__c> list_SMS_Histories = new List<SMS_History__c>();   
        SMS_History1 = new SMS_History__c(Account__c = acc[0].Id,Message__c          = 'Test SMS ', Mobile_Number__c    = acc[0].Mobile__c);
        list_SMS_Histories.add(SMS_History1);
        SMS_History2 = new SMS_History__c(Account__c = acc[1].Id,Message__c          = 'Test SMS ', Mobile_Number__c    = acc[1].Mobile__c);
        list_SMS_Histories.add(SMS_History2);
        Insert list_SMS_Histories;
    }
}

 

 

 

Regards

Sagarika Rout

SFDC Developer

@rajeshdulhai@rajeshdulhai

No its not working

@rajeshdulhai@rajeshdulhai

Hi all ,

 

I have written test class for the above code ,

 

@istest(seeAllData=false)
private class TestTwilioWeeklyScheduledSMS { 
    public static testmethod void TestTwilioWeeklyScheduledSMS()
    {
        Test.StartTest();
        TwilioWeeklyScheduleSMS sh1 = new  TwilioWeeklyScheduleSMS();      
        String sch='0 0 * * * ?';
        system.schedule('Test check', sch, sh1);
        Test.stopTest();
    }
}

 

this test class is giving me 28% of code coverage . can you help me out what should i add more into the code to get atleast 75 % of code coverage

 

Thanks

SFDC-NOOBSFDC-NOOB

I imagine you have 0 code coverage for your account list because you have not inserted an account for testing.  You need to insert an account to test.  Use the code that Sagarika provided to establish a list of accounts.  You can also insert one account like this.

 

account a = new account(Name = 'Test', Phone = '4107846654', email = '123@test.com', Weekly_Scheduled_SMS__c = true);

insert a;

 

 

Adding an account or list of accounts should give you some more code coverage.

Abhi_TripathiAbhi_Tripathi