有时候,我们写完controller之后要求测试代码的覆盖率。
下面写个简单的例子。
1 public with sharing class CL_00_action { 2 public String getId{set;get;} 3 public list<A_NO_1__c > uList{set;get;} 4 public String println(){ 5 String a = 'hello'; 6 String b = 'today'; 7 String c = a +' '+ b; 8 return c; 9 } 10 public list<A_NO_1__c> selectUser(){ 11 uList = [ SELECT Id, Name FROM A_NO_1__c where Id =:getId ]; 12 if(uList.size()==0){ 13 return null; 14 } 15 return uList; 16 } 17 18 }
接下来的步奏是写一个测试类。
1 @isTest
2 public class CL_00_testAction {
3 static testMethod void test1(){
4 Test.startTest();
5 CL_00_action cls = new CL_00_action();
6 cls.println();
7 Test.stopTest();
8 }
9 @isTest
10 static void test2(){
11 CL_00_action cls = new CL_00_action();
12 A_NO_1__c u = new A_NO_1__c (
13 name = 'test'
14 );
15
16 insert u;
17
18 cls.getId = u.id;
19 Test.startTest();
20 cls.selectUser();
21 Test.stopTest();
22 }
23 }
@isTest是必须写的,这样控制台才能识别,
测试的时候测试内容是Test.startTest();和Test.stopTest();之间的方法。
我要测试的类里有两个方法,第一个println()方法只要直接调用就可以,
第二个startTest();方法要求数据库里有数据才可以被检索出来,所以要自己先造数据,插入数据库才可以成功测试。此时这条数据并不是真正的写到数据库里,测试完就没有了。测试的具体步骤如下。
这就是步骤了,如果你想看你的代码里哪些代码被执行双击荧光色部分,蓝紫色的部分是跑到的,红色是没有。
如果在标1 的比方有错误可按照步奏排查。
有一些常见错误,你要插入的数据是否允许被写入(常见为ID,name),是否有些必须写入项,没有写。
这两种方法是一样的。