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
Partha S 13Partha S 13 

Need help in test class for trigger

Hi All,
I need help in writing test class for trigger. I have written but its giving only 65%. Please help me.
trigger test1 on obj1__c (after insert, after update)
{
if(trigger.isAfter&& (trigger.isinsert || trigger.isUpdate))
{
    test3.method1(Trigger.New);
}
}
 
public class test3
{
    public static void method1(List<Obj1__c> o1)
    {
        map<string, obj1__c> ObjMap = new map<string, obj1__c>();
    
    for(obj1__c obj: o1)
    {
        if (obj.Shared_Field__c != Null)
        {
            ObjMap.put(obj.Shared_Field__c, obj);
        }
    }
    
    List<obj2__c> obj2l = [SELECT Id, Shared_Field__c, F1__c,f2__c 
                        FROM obj2__c WHERE Shared_Field__c IN :ObjMap.KeySet()];
    List<obj2__c> obj2list = new List<obj2__c>();
    
    for(obj2__c c: obj2l)
    {
        obj1__c obj = ObjMap.get(c.Shared_Field__c);
        c.f1__c = obj.f1__c;
        c.f2__c = obj.f2__c;
        
        obj2list.add(c);
    }
    
    if(obj2list.size() > 0)
    {
        update obj2list;
    }
    }
    
}

Thanks in Advance

 
Best Answer chosen by Partha S 13
Jolly_BirdiJolly_Birdi
Hello @Partha

Try this below test class:
 
@isTest
private class obj1Trigger_Test{
  @testSetup
  static void setupTestData(){
	Obj2__c obj2_Obj = new Obj2__c(Name = 'Name702', F1__c = 'F1__c593', f2__c = 'f2__c407', Shared_Field__c = 'Share766');
    Insert obj2_Obj; 

	
  }
  static testMethod void test_obj1Trigger(){
   test.startTest();
    List<Obj2__c> obj2_Obj  =  [SELECT ID,Name,F1__c,f2__c,Shared_Field__c from Obj2__c];
    System.assertEquals(1,obj2_Obj.size());
    obj1__c obj1_Obj = new obj1__c(Name = 'Name236', F1__c = 'F1__c568', f2__c = 'f2__c766', Shared_Field__c = 'Share766');
    Insert obj1_Obj; 
   test.stopTest();
  }
  static testMethod void test_method1(){
    test3 obj01 = new test3();
    test3.method1(new List<Obj1__c>());
  }
}



Plese like and mark it as best answer if it resolve your query.

Thanks,
Jolly Birdi

All Answers

so_mayankso_mayank
Hi Pratha,

It is difficult to say anything without the actual test class. Could you add that?

FYI, On developer console, after running the test class, if you go to the 'test3' class and click the 'code coverage' dropdown on the top left. It will highlight (red color) the code which was not covered by the test class.

 
Partha S 13Partha S 13
Hi sf_new,
This is my test class.
@isTest
private class obj1Trigger_Test{
  @testSetup
  static void setupTestData(){
    Obj2__c obj2_Obj = new Obj2__c(Name = 'Name702', F1__c = 'F1__c593', f2__c = 'f2__c407', Shared_Field__c = 'Share766');
    Insert obj2_Obj; 

  }
  static testMethod void test_obj1Trigger(){
   test.startTest();
    List<Obj2__c> obj2_Obj  =  [SELECT ID,Name,F1__c,f2__c,Shared_Field__c from Obj2__c];
    System.assertEquals(1,obj2_Obj.size());
    obj1__c obj1_Obj = new obj1__c(Name = 'Name236', F1__c = 'F1__c568', f2__c = 'f2__c766', Shared_Field__c = 'Share911');
    Insert obj1_Obj; 
   test.stopTest();
  }
  static testMethod void test_method1(){
    test3 obj01 = new test3();
    test3.method1(new List<Obj1__c>());
  }
}

 
Jolly_BirdiJolly_Birdi
Hello @Partha

Try this below test class:
 
@isTest
private class obj1Trigger_Test{
  @testSetup
  static void setupTestData(){
	Obj2__c obj2_Obj = new Obj2__c(Name = 'Name702', F1__c = 'F1__c593', f2__c = 'f2__c407', Shared_Field__c = 'Share766');
    Insert obj2_Obj; 

	
  }
  static testMethod void test_obj1Trigger(){
   test.startTest();
    List<Obj2__c> obj2_Obj  =  [SELECT ID,Name,F1__c,f2__c,Shared_Field__c from Obj2__c];
    System.assertEquals(1,obj2_Obj.size());
    obj1__c obj1_Obj = new obj1__c(Name = 'Name236', F1__c = 'F1__c568', f2__c = 'f2__c766', Shared_Field__c = 'Share766');
    Insert obj1_Obj; 
   test.stopTest();
  }
  static testMethod void test_method1(){
    test3 obj01 = new test3();
    test3.method1(new List<Obj1__c>());
  }
}



Plese like and mark it as best answer if it resolve your query.

Thanks,
Jolly Birdi
This was selected as the best answer
Rahul.MishraRahul.Mishra
Here is test class with 100% code coverage:
 
@isTest
private class Test_objTriggerHandler {


// Method to run on after insert of trigger obj1
	private static testMethod void Test_AfterInsert() {
       obj2__c obj1 = new obj2__c(Name = 'Test Obj2', f1__c = 'test f21', f2__c = 'test f22', Shared_Field__c = 'test shared field1');
       insert obj1;
       
       obj1__c obj2 = new obj1__c(Name = 'Test Obj1', f1__c = 'test f1', f2__c = 'test f2', Shared_Field__c = 'test shared field1');
       insert obj2;
	}
	
	
	// Method to run on after update of trigger of obj1
	
	private static testMethod void Test_AfterUpdate() {
	    
	   obj2__c obj21 = new obj2__c(Name = 'Test Obj2', f1__c = 'test f21', f2__c = 'test f22', Shared_Field__c = 'test shared field2');
       insert obj21;
       
       obj1__c obj23 = new obj1__c(Name = 'Test Obj1', f1__c = 'test f1', f2__c = 'test f2', Shared_Field__c = 'test shared field1');
       insert obj23;
       
       obj23.Shared_Field__c = 'test shared field2';
       update obj23;
       
	}
}