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
me_helpme_help 

Test Class for trigger

Hi,

 

I am new to salesforce and have writte the following trigger but not able to write test class for it.

Can anyone help me with the code for its test class??

 

Trigger

 

trigger increaseCount on Employee__c (after insert) 
{
List<Employee__c> EmployeeToUpdate = new List<Employee__c>{};
for(Employee__c emp : Trigger.new)
  {
  Company__c company =[ select Number_of_Employees__c from Company__c where Id= :emp.Company__c ];
    if (company.Number_of_Employees__c==Null)
   {
   company.Number_of_Employees__c=1;
   }
   else
   {company.Number_of_Employees__c =company.Number_of_Employees__c+1;}
   update company;
  }
}

goabhigogoabhigo

Hi,

 

First things first: dont use SOQL query, DML statements inside for loop. Refer these posts for more info.

 

Sample Test class:

 

@isTest
private class TestIncreaseCountTrigger {
 static testMethod void myUnitTest() {
  List<Employee__c> listE = new List<Employee__c> ();
  listE.add(new Employee__c(name='testE1',......));
  listE.add(new Employee__c(name='testE2',......));
  listE.add(new Employee__c(name='testE3',......));
  
  //Similarly insert some company records. Set necessary fields value while inserting
  
  insert listE;
 }
}
  

 

 

me_helpme_help

thanks Abhi,

 

I have written this test class on my own, but code coverage is coming out to be 0.

I am not able to confgure the part i am missing.

 

Test Class

 

@isTest
private class IncreaseCountTest

static testMethod void myUnitTest()
{

//insert a company record
  Company__c cmp = new Company__c();
  cmp.Name='abc';
  insert cmp;
  Employee__c emp= new Employee__c();

  
//use the company record id to populate the Employee's company__c field on employee
   emp.Company__c=cmp.id;
   cmp = [SELECT Number_of_Employees__c FROM Company__c WHERE Id = :emp.Company__c];
  
//insert an employee record
  emp.Name='sam';
  emp.DOB__c=System.today()-1500;
  emp.DOJ__c=System.today();
  emp.Company__c='cmp.id';
  emp.Department__c='Finance';
  insert emp;
 
  update cmp;
   integer test=1;
  System.assertEquals(test, cmp.Number_of_Employees__c );
}
}

kiranmutturukiranmutturu

try this

 

 

@isTest
private class testmydata{
    static testmethod void mymethod(){
        
      company__c objcomp = new company__c();
      objcomp.name = 'test';
      insert objcomp;
      
      Employee__c objemp = new Employee__c();
      objemp.company__c = objcomp.id;
      insert objemp;
     
      company__c objcomp1 = new company__c();
      objcomp1.name = 'test';
      objcomp1.Number_of_Employees__c = 9;
      insert objcomp1;
      
      Employee__c objemp1 = new Employee__c();
      objemp1.company__c = objcomp1.id;
      insert objemp1;
     
      
         
    }
}

 

goabhigogoabhigo

Here is your test method:

 

 

@isTest
private class TestIncreaseCountTrigger {
 static testMethod void myUnitTest() {
  List<Employee__c> listE = new List<Employee__c> ();
  List<Company__c> listC = new List<Company__c> ();
  listC.add(new Comany__c(name='testC1',Number_of_Employees__c=7));
  listC.add(new Comany__c(name='testC2',Number_of_Employees__c=3));
  insert listC;
  listE.add(new Employee__c(name='testE1',Company__c=listC[0].id));
  listE.add(new Employee__c(name='testE2',Company__c=listC[1].id));
  insert listE;
 }
}