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
si risi ri 

how to improve code coverage for Apex test class

Hi,
  I have an  Apex class, While writing the test class I'm able to get the code coverage only 47%. But I was stuck at  this point only
Please, anyone, help on this.
  
My Apex Class
public class updatemonitoringservice{
    public static void UpdateMonitoring(List<Account> newlist){
        //Get list of Account records.        
system.debug('inside helper');        
    set<Id> accId = new set<Id>();
        for(Account acc : newList){
            accId.add(acc.id); //Adding accountId's to Set.      
             }
    List<Account> accList = [select id, Name, Suspend__c,(select id,Status__c,prior_status__c,
                         prior_monitoring_service__c,Monitoring_Service__c from Installations__r) from Account where Id=:accId]; //Fetch Account related Installations.
      map<Id,List<Installation__c>> mapInst = new map<Id,List<Installation__c>>();
        for(Account accVar : accList){
            mapInst.put(accVar.Id,accVar.Installations__r); // addAll Id's & installations to the Map.
        }
  system.debug('mapInst::'+mapInst);
       List<Installation__c> updateInst = new List<Installation__c>();
      List<Installation__c> upInstallation = new List<Installation__c>();
      
        for(Account a : accList){
                                       
           if(a.Suspend__c)
              {
            
                system.debug('a.Suspend__c::'+a.Suspend__c);
               updateInst.addAll(mapInst.get(a.Id));  // get Id's and add to updateInst list.
               
            }
        
           if(!a.Suspend__c)
            {
                system.debug('a.Suspend__c::'+a.Suspend__c);
                upInstallation.addALL(mapInst.get(a.Id)); // get Id's and add to upInstallation list.
            } 
        }
        List<Installation__c> installationsToUpdate = new List<Installation__c>(); //List for updating the record.      
        
        for(Installation__c instVar:updateInst) //if Suspend equals to true update status and monitoring service values & 
                                                // capture old values in prior_status__c and prior_monitoring_service__c.
        {
            system.debug('inside true');
            system.debug('prior_monitoring_service__c::'+instVar.prior_monitoring_service__c);
            system.debug('monitoring_service__c::'+instVar.Monitoring_Service__c);
            
          system.debug('************************');
           system.debug('prior_status__c::'+instVar.prior_status__c);
           system.debug('Status__c::'+instVar.Status__c);
            if(instVar.Status__c !='5-Removed' && instVar.Status__c !='6-Canceled' && instVar.Status__c !='Swapped-Out' 
               && instVar.Status__c !='Abandoned'){
                 
             if(instVar.Status__c !='Suspend')
                instVar.prior_status__c = instVar.Status__c;
               
           // if(instVar.Monitoring_Service__c != 'Client')             
                instVar.prior_monitoring_service__c = instVar.Monitoring_Service__c;          
           
            instVar.Status__c = 'Suspend';
            instVar.Monitoring_Service__c = 'Client';
            installationsToUpdate.add(instVar);
        
          }
        }
        for(Installation__c instVar : upInstallation) //if Suspend equals to false revert old values in status and monitoring fields.
        {
            system.debug('inside false');
            boolean isRemovePriorChanged = true;
            if(instVar.Status__c !='5-Removed' && instVar.Status__c !='6-Canceled' && instVar.Status__c !='Swapped-Out' 
               && instVar.Status__c !='Abandoned'){
              if(instVar.prior_status__c != null && instVar.prior_monitoring_service__c !=null){
                       
                   
                instVar.Status__c =  instVar.prior_status__c ;
                instVar.Monitoring_Service__c = instVar.prior_monitoring_service__c;
                  
            if(isRemovePriorChanged && instVar.Status__c != NULL && instVar.Monitoring_Service__c != NULL)
            {
                instVar.prior_status__c = NULL;
                instVar.prior_monitoring_service__c = NULL;
                system.debug('Priorstatus value::'+instVar.prior_status__c);
                system.debug('Priormoniotoring service value::'+instVar.prior_monitoring_service__c);
            }          
            installationsToUpdate.add(instVar);
          }
         }
        } 
        update installationsToUpdate;    
 }  
}

My Test Class
@isTest
public class updatemonitoringtestclass {
    public static testMethod void testing(){    
      List<Account> acc = new List<Account>();
        Account a1 = new Account();
        a1.Name = 'test';
        a1.Type = 'Prospect';
        a1.Channel__c = 'Direct';
         a1.Suspend__c = true;
        acc.add(a1);
        insert acc;       
       
        Contact con = new Contact();
        con.LastName = 'Vgs';
        insert con;    
        
       Case ca = new Case();
        ca.Type ='Account Change';
        ca.Status ='01-New';
        ca.Subject ='test new';
        ca.Description = 'new Description';
        ca.AccountId= a1.id;
        ca.ContactId = con.id;  
        insert ca;
        
       Opportunity opp = new Opportunity();
        opp.Name = 'test1';
        opp.Type = 'Existing Business';
        opp.CloseDate = system.today();
        opp.StageName = '01-Discovery';
        opp.Prospect_Level__c = 'A';
        opp.LeadSource = 'web';
        opp.AccountId = a1.id; 
        insert opp;
        
       List<Installation__c> instList = new List<Installation__c>();
       Installation__c inst = new Installation__c();
        inst.Name__c ='instal';
        inst.Status__c = 'Suspend';
        inst.Monitoring_Service__c = 'Client';   
         inst.Site__c = a1.id;
        inst.prior_status__c = '0-New';
        inst.prior_monitoring_service__c = 'Live';
        inst.Install_Case__c = ca.id;
         inst.Opportunity__c = opp.id;
        instList.add(inst);
        insert inst;      
        
       a1.Suspend__c = true ;
       update acc;   
        List<Installation__c> instal = [select id,Status__c,prior_status__c,
                         prior_monitoring_service__c,Monitoring_Service__c from Installation__c where Id=:instList];
        for(Installation__c ins : instal){
            System.assertEquals('Suspend',ins.Status__c);
            System.assertEquals('Client',ins.Monitoring_Service__c);
          //  system.assertEquals(ins.Monitoring_Service__c,ins.prior_monitoring_service__c);
           // system.assertEquals(ins.Status__c,ins.prior_status__c);
            a1.Suspend__c=false;
            update acc;
   
                    }
        }     
    }
enossirenossir
Use seeAllData = true
Raj VakatiRaj Vakati
try this code
 
@isTest
public class updatemonitoringtestclass {
    public static testMethod void testing(){    
      List<Account> acc = new List<Account>();
        Account a1 = new Account();
        a1.Name = 'test';
        a1.Type = 'Prospect';
        a1.Channel__c = 'Direct';
         a1.Suspend__c = true;
        acc.add(a1);
        insert acc;       
       
        Contact con = new Contact();
        con.LastName = 'Vgs';
        insert con;    
        
       Case ca = new Case();
        ca.Type ='Account Change';
        ca.Status ='01-New';
        ca.Subject ='test new';
        ca.Description = 'new Description';
        ca.AccountId= a1.id;
        ca.ContactId = con.id;  
        insert ca;
        
       Opportunity opp = new Opportunity();
        opp.Name = 'test1';
        opp.Type = 'Existing Business';
        opp.CloseDate = system.today();
        opp.StageName = '01-Discovery';
        opp.Prospect_Level__c = 'A';
        opp.LeadSource = 'web';
        opp.AccountId = a1.id; 
        insert opp;
        
       List<Installation__c> instList = new List<Installation__c>();
       Installation__c inst = new Installation__c();
        inst.Name__c ='instal';
        inst.Status__c = 'Suspend';
        inst.Monitoring_Service__c = 'Client';   
         inst.Site__c = a1.id;
        inst.prior_status__c = '0-New';
        inst.prior_monitoring_service__c = 'Live';
        inst.Install_Case__c = ca.id;
         inst.Opportunity__c = opp.id;
        instList.add(inst);
        insert inst;      
        
       a1.Suspend__c = true ;
       update acc;   
        List<Installation__c> instal = [select id,Status__c,prior_status__c,
                         prior_monitoring_service__c,Monitoring_Service__c from Installation__c where Id=:instList];
        for(Installation__c ins : instal){
            System.assertEquals('Suspend',ins.Status__c);
            System.assertEquals('Client',ins.Monitoring_Service__c);
          //  system.assertEquals(ins.Monitoring_Service__c,ins.prior_monitoring_service__c);
           // system.assertEquals(ins.Status__c,ins.prior_status__c);
            a1.Suspend__c=false;
            update acc;
   
                    }
        }   

		
		 
updatemonitoringservice.UpdateMonitoring(acc);
		
    }
	
	 public static testMethod void testing1(){    
      List<Account> acc = new List<Account>();
        Account a1 = new Account();
        a1.Name = 'test';
        a1.Type = 'Prospect';
        a1.Channel__c = 'Direct';
         a1.Suspend__c = false;
        acc.add(a1);
        insert acc;       
       
        Contact con = new Contact();
        con.LastName = 'Vgs';
        insert con;    
        
       Case ca = new Case();
        ca.Type ='Account Change';
        ca.Status ='01-New';
        ca.Subject ='test new';
        ca.Description = 'new Description';
        ca.AccountId= a1.id;
        ca.ContactId = con.id;  
        insert ca;
        
       Opportunity opp = new Opportunity();
        opp.Name = 'test1';
        opp.Type = 'Existing Business';
        opp.CloseDate = system.today();
        opp.StageName = '01-Discovery';
        opp.Prospect_Level__c = 'A';
        opp.LeadSource = 'web';
        opp.AccountId = a1.id; 
        insert opp;
        
       List<Installation__c> instList = new List<Installation__c>();
       Installation__c inst = new Installation__c();
        inst.Name__c ='instal';
        inst.Status__c = 'Suspend';
        inst.Monitoring_Service__c = 'Client';   
         inst.Site__c = a1.id;
        inst.prior_status__c = '0-New';
        inst.prior_monitoring_service__c = 'Live';
        inst.Install_Case__c = ca.id;
         inst.Opportunity__c = opp.id;
        instList.add(inst);
        insert inst;      
        
       a1.Suspend__c = true ;
       update acc;   
        List<Installation__c> instal = [select id,Status__c,prior_status__c,
                         prior_monitoring_service__c,Monitoring_Service__c from Installation__c where Id=:instList];
        for(Installation__c ins : instal){
            System.assertEquals('Suspend',ins.Status__c);
            System.assertEquals('Client',ins.Monitoring_Service__c);
          //  system.assertEquals(ins.Monitoring_Service__c,ins.prior_monitoring_service__c);
           // system.assertEquals(ins.Status__c,ins.prior_status__c);
            a1.Suspend__c=false;
            update acc;
   
                    }
        }   

		
		 
updatemonitoringservice.UpdateMonitoring(acc);
		
    }
	
	
	}

 
si risi ri
Hi!
When I try to use seeAllData = true, I'm getting the following error... can u help me outUser-added image
si risi ri
Hi!
 Raj Vakati, I also tried your code, but it was throwing error  line no. 066 updatemonitoringservice.UpdateMonitoring(acc); and at line no 133 updatemonitoringservice.UpdateMonitoring(acc);