function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Mubarak Hussain 1Mubarak Hussain 1 

Testclass for following code

Hi all,
I am writing Test class for apex class and am getting 70% code coverage but the following lines are not covered.
How to write a testclass class for covering this codes.
Highlighted lines are not coverdUser-added image

Thanks
Best Answer chosen by Mubarak Hussain 1
Amit Chaudhary 8Amit Chaudhary 8
Please try below test class. 
@isTest()
public class MyclassTest 
{
   static testmethod void UnitTest()
   {
   
    Account acc=new Account();
    acc.name='Test';
    acc.CurrencyIsoCode='USD';
    insert acc;
        
    Contact con=new contact();
    con.firstname='firstUser';
    con.LastName='lastUser';
    con.AccountId=acc.id;
    con.CurrencyIsoCode='USD';
    insert con;
     
    set<Id> cids=new Set<Id>();
    List<case> lstcase=new List<case>();
       
    case c=new case();
   	c.origin='IM'; 
    c.Status='In Progress';
    c.CurrencyIsoCode='USD';
    c.ContactId=con.Id;
    c.Apex_Updated__c=111;
    c.RecordTypeId=properties.Example1.id;
    insert c;

	cids.add(c.id);
	lstcase.add(c);
	
    case c1=new case();
    c1.origin='IM'; 
    c1.Status='In Progress';
    c1.CurrencyIsoCode='USD';
    c1.ContactId=con.Id;
    c1.Apex_Updated__c=111;
    c1.RecordTypeId=Properties.Example2.Id;
	insert c1;

	cids.add(c1.id);
	lstcase.add(c1);
            
        Test.startTest();
    
				MyClass.MyMethod(cids);
				MyClass.MyMethod1(lstcase);

		Test.stopTest();
    }
}

Please let us know if that will help u

Thanks
Amit Chaudhary

All Answers

Tugce SirinTugce Sirin
Did you create test objects in your test class? Because most probably your clist List is empty and this is why those lines are not covered through unit test.
Mubarak Hussain 1Mubarak Hussain 1
Hi amit,

This s my testclass and Apex class.
@isTest(SeeAllData=True)
public class MyclassTest {
    
   static testmethod void UnitTest(){
     
    Account acc=new Account();
    acc.name='Test';
    acc.CurrencyIsoCode='USD';
    insert acc;
        
    Contact con=new contact();
    con.firstname='firstUser';
    con.LastName='lastUser';
    con.AccountId=acc.id;
    con.CurrencyIsoCode='USD';
    insert con;
     
    set<Id> cids=new Set<Id>();
    list<Case> clist=new list<case>([SELECT Id, Apex_Count__c FROM Case WHERE Id IN: cids ]);  
       
    list<case> ca=new list<case>();
    case c=new case();
   	c.origin='IM'; 
    c.Status='In Progress';
    c.CurrencyIsoCode='USD';
    c.ContactId=con.Id;
    c.Apex_Count__c=111;
    c.RecordTypeId=properties.Example1.id;
    ca.add(c);
    insert ca;
    system.assertEquals(c.Origin,'IM');
    System.assertEquals(c.CurrencyIsoCode,'USD');
    
    case c1=new case();
    c1.origin='IM'; 
    c1.Status='In Progress';
    c1.CurrencyIsoCode='USD';
    c1.ContactId=con.Id;
    c1.Apex_Count__c=111;
    c1.RecordTypeId=Properties.Example2.Id;
    ca.add(c1);
                 
    
        c.Apex_Count__c=2112;
        update clist;
        
            
        Test.startTest();
    
        MyClass.MyMethod(cids);
        MyClass.MyMethod1(clist);
    
        Test.stopTest();
    }
}



Apex Class
public class Myclass {

    public static void MyMethod(set<Id> cids) {
        
        list<Case> clist = [SELECT Id, Apex_count__c FROM Case WHERE Id IN: cids];
        Database.DMLOptions dmo = new Database.DMLOptions();
        dmo.assignmentRuleHeader.useDefaultRule = true;
        
        for(Case c : clist){
        	c.setOptions(dmo);
            c.Apex_count__c = System.currentTimeMillis(); 
			}
        	
        update clist;
    }     
    
        public static void MyMethod1(list<Case> clist){
        
		for (Case c: clist){
        	Id rtId = c.RecordTypeId; 
            system.debug('Case Recordtype:'+c.recordtypeid);
            
    		if (rtId == Properties.example1.Id) {
                c.RecordTypeId = Properties.example1.Id;
                
            } else if (rtId == Properties.example2.Id) {
                c.RecordTypeId = Properties.example2.Id;
                }}

 
Amit Chaudhary 8Amit Chaudhary 8
Please try below code.
@isTest()
public class MyclassTest 
{
   static testmethod void UnitTest()
   {
   
    Account acc=new Account();
    acc.name='Test';
    acc.CurrencyIsoCode='USD';
    insert acc;
        
    Contact con=new contact();
    con.firstname='firstUser';
    con.LastName='lastUser';
    con.AccountId=acc.id;
    con.CurrencyIsoCode='USD';
    insert con;
     
    set<Id> cids=new Set<Id>();
       
    list<case> ca=new list<case>();
    case c=new case();
   	c.origin='IM'; 
    c.Status='In Progress';
    c.CurrencyIsoCode='USD';
    c.ContactId=con.Id;
    c.Apex_Updated__c=111;
    c.RecordTypeId=properties.Example1.id;
    insert c;
	cids.add(c.id);
	
	clist.add(c);
	
    case c1=new case();
    c1.origin='IM'; 
    c1.Status='In Progress';
    c1.CurrencyIsoCode='USD';
    c1.ContactId=con.Id;
    c1.Apex_Updated__c=111;
    c1.RecordTypeId=Properties.Example2.Id;
	insert c1;
	cids.add(c1.id);
	
    clist.add(c1);
            
        Test.startTest();
    
        MyClass.MyMethod(cids);
        MyClass.MyMethod(clist);
    
        Test.stopTest();
    }
}

Please let us know if this will help u
 
Mubarak Hussain 1Mubarak Hussain 1
Hi amit,
Thank you My code coverage got increased but still those two line not yet covered.

Thanks
Amit Chaudhary 8Amit Chaudhary 8
Please try below test class. 
@isTest()
public class MyclassTest 
{
   static testmethod void UnitTest()
   {
   
    Account acc=new Account();
    acc.name='Test';
    acc.CurrencyIsoCode='USD';
    insert acc;
        
    Contact con=new contact();
    con.firstname='firstUser';
    con.LastName='lastUser';
    con.AccountId=acc.id;
    con.CurrencyIsoCode='USD';
    insert con;
     
    set<Id> cids=new Set<Id>();
    List<case> lstcase=new List<case>();
       
    case c=new case();
   	c.origin='IM'; 
    c.Status='In Progress';
    c.CurrencyIsoCode='USD';
    c.ContactId=con.Id;
    c.Apex_Updated__c=111;
    c.RecordTypeId=properties.Example1.id;
    insert c;

	cids.add(c.id);
	lstcase.add(c);
	
    case c1=new case();
    c1.origin='IM'; 
    c1.Status='In Progress';
    c1.CurrencyIsoCode='USD';
    c1.ContactId=con.Id;
    c1.Apex_Updated__c=111;
    c1.RecordTypeId=Properties.Example2.Id;
	insert c1;

	cids.add(c1.id);
	lstcase.add(c1);
            
        Test.startTest();
    
				MyClass.MyMethod(cids);
				MyClass.MyMethod1(lstcase);

		Test.stopTest();
    }
}

Please let us know if that will help u

Thanks
Amit Chaudhary
This was selected as the best answer
Mubarak Hussain 1Mubarak Hussain 1
Hi Amit,

Now am getting 100% code coverage.Thank you so much for your immediate help