我已经在 salesforce 上编写过代码,为了发布单元测试,必须至少覆盖75%。
我面临的是,即使它已经在文件中完成classOne
,调用方法的classTwo
也必须覆盖classOne 中classTwo
的单元测试。classTwo
文件 MyClassTwo
public with sharing class ClassTwo {
public String method1() {
return 'one';
}
public String method2() {
return 'two';
}
public static testMethod void testMethod1() {
ClassTwo two = new ClassTwo();
String out = two.method1();
system.assertEquals(out, 'one'); //valid
}
public static testMethod void testMethod2() {
ClassTwo two = new ClassTwo();
String out = two.method2();
system.assertEquals(out, 'two'); // valid
}
}
归档 MyClassOne
public with sharing class ClassOne {
public String callClassTwo() {
ClassTwo foo = new ClassTwo();
String something = foo.method1();
return something;
}
public static testMethod void testCallClassTwo() {
ClassOne one = new ClassOne();
String out = one.callClassTwo();
system.assertEquals(out, 'one');
}
}
测试 MyClassOne 的结果不会返回 100% 的测试覆盖率,因为它说我没有覆盖 MyClassOne 文件中的 MyClassTwo method2() 部分。
但是我已经在 MyClassTwo 文件中为 MyClassTwo 编写了单元测试,如您所见。
那么这是否意味着我必须将 MyClassTwo 文件中的单元测试复制并粘贴到 MyClassOne 中?
这样做给了我 100% 的覆盖率,但这似乎真的很烦人和可笑。在 ClassA 和 ClassB 中进行相同的测试....?我做错了还是这样?
话虽如此,是否可以在 Salesforce 中创建模拟对象?我还没想好怎么办。。
UDPATE
我重写了代码并在上面进行了更新,这一次确保 classOne 测试不会返回 100%,即使它没有调用 classTwo method2()