今天这篇是延续Salesforce开发教程(一)、Salesforce开发教程(二)的内容,对之前没涉及到的主题进行的补充。主要包括Unit Test、Batch、Schedule Job、Rest和Soap相关内容。
测试类
当我们写完某个功能的时候,怎么能够保证自己写的代码正常运行起来呢?大家可能会说测试一下就可以了,那是不是这样子呢?其实测试分为单元测试、集成测试、功能测试,从前到后分别对应着三个阶段,这里的测试类指的是单元测试,为了能够让集成测试和功能测试顺利的运行起来,作为开发者,应该能够保证单元测试正常运行,保证函数方法是没问题的,后面的集成、功能测试才能正常顺利进行;换句话说,之所有单元测试这么重要,是为了能够将代码问题提前暴露出来,尽早的解决。所以我们应该除了将功能开发完成后,还需要通过测试类来验证功能是否完整;除此以外Salesforce会要求代码的单元测试覆盖率达到75%以上,所以单元测试的重要性就不言而喻了。下面我们来看看在Salesforce中怎样进行单元测试?
单元测试的语法很简单:
@isTest
static void testName() {
// code
}
这是一个单元测试方法,需要将这个方法放到下面的Class中:
@isTest
private class MyTestClass {
@isTest
static void testName() {
// code
}
}
简单可以简测试类的过程分为三个步骤:
- 准备数据
这里的数据指的是运行测试类数据,每当测试类运行完成后,数据库的数据会被回滚,不必担心测试类中修改的数据影响到数据库。这里注意提倡测试类用到的数据应该避免依赖于某个组织(不建议使用SeeAllData=true标注);推荐你使用**@testSetup申明setup**方法准备数据;另外需要注意的是,Salesforce有一些系统限制是难以避免的(比如Soql 101 错误),出现这样的错误后,需要优化一下Soql和DML操作。 - 调用要测试的类
实例化需要测试的Class,调用相应的方法就可以了;注意的是除了正向测试,还应该进行反向功能测试,从而提高代码的健壮性。 - 断言方法输出的内容是否和预期的一致
每次运行测试类方法都应该进行assert,从