在Salesforce当中是对我们Test Class有相当高的要求,否则会影响你的整个的部署。所以针对Taste Class也需要我们去学习研究一下。第一个是整个org的的覆盖率必须高于75%,然后是每个Apex Class必须有Coverage。
Note:
1.在Test Class里面尽量避免是@isTest(SeeAllData = true),这种在测试Batch这种大数据的时候很容易导致LIMIT,所以尽量自己在测试类里面去自己创建测试数据,当然测试数据越全面越好,这样可以很大程度的提高我们的覆盖率,部署是也比较容易通过。
2.System.runAs 方法是很有必要的,因为我们有权限的设置,你不知道这个测试类最后是以谁的角色去运行的,所以使用创建一个测试用户,是避免这类问题的关键。
3.有些代码片段你是不想去覆盖的,可以在代码里面做这样的设置if(!Test.isRunningTest()),这样被包含的代码段就不会被跑到了。
4.在创建测试类的时候我们往往需要创建很多重复记录,这个时候可以创建一个TestDataFactory用于数据准备,只要在用到数据的时候调用一下就可以了。
5.Best Practice: 每一个Test Class都要有验证语句System.assertEqual()。
6.Best Practice:测试类最好是Private类型,@isTest 比 test Method 更灵活。
7.Test suite:把你要运行的测试类放在一个Suite里面,这样你就可以运行所有你自己写的Apex Class了
8.测试数据不会提交到数据库,当你的测试类跑完的时候,自动的会Roll Back。但是测试数据和你的正式数据是在同一个数据库,所以在创建数据的时候,仍然会有重复数据的问题。
9.测试数据不会发送邮件,且不会调用外部系统的Service,所以可以使用Mock Callout在测试类中。
10.SOSL searches performed in a test return empty results. To ensure predictable results, use Test.setFixedSearchResults()to define the records to be returned by the search.
网友评论