由于salesforce的硬性要求,salesforce apex代码覆盖率至少要达到75%、且所有的测试方法都成功执行完成,才能正常部署到生产环境。
我理解的编写测试类分为4个步骤:
- 理解代码逻辑(数据的增删改)
- 创建测试数据
- 用测试数据模拟代码逻辑执行
- 验证结果
案例:
某企业员工的薪资组成为Base+奖金,且奖金额为Base的10%。
薪资表 Apex Trigger:
trigger SalaryTrigger on Salary__c (before insert) {
List<Salary__c> salaryList = Trigger.new;
SalaryHandler.countSalary(salaryList);
}
Apex Trigger Handler:
public class SalaryHandler {
public static void countSalary(List<Salary__c> salaryList) {
for (Salary__c salaryRecord :salaryList){
salaryRecord.TotalSalary__c = salaryRecord.BaseSalary__c + salaryRecord.BaseSalary__c*0.1;
}
}
}
测试类:
@isTest
private class SalaryHandlerTestClass {
static testMethod void countSalaryTest() {
// 创建测试数据
Salary__c sly = new Salary__c(Name='员工1', BaseSalary__c=10000);
Test.startTest();
// 插入数据,模拟Handler类中代码逻辑执行
insert sly;
Test.stopTest();
// 取得新插入的测试数据
sly = [SELECT TotalSalary__c FROM Salary__c WHERE Id =:sly.Id];
// 验证数据结果
System.assertEquals(11000, sly.TotalSalary__c);
}
}
写在最后:
在实际工作中,关于75%这个覆盖率,在达到标准的基础上,我们更应该关注的是,所有的用例是否都被覆盖到了,不要单纯纠结于覆盖率大小。
Copyright © 乔木船长
个人主页:乔木船长
欢迎转发点评和指正!