我是Junit的新手。我在测试类中有2个方法。方法A将调用方法B.在B中,在编写测试用例时需要考虑一些条件情况。
因此,在这种情况下,如果我为B编写测试,那么A,测试的代码将被复制。你对这个案子有什么想法吗?
代码如下:
class Example{
public void A(){
assert B();
varA ++;
}
public boolean B(){
if (case1){
var1B ++;
if (case 1.1){
var2B++;
return false;
}
}
var3B --;
return true;
}
}
感谢。
答案 0 :(得分:1)
使用Mockito(或其他模拟框架),在测试A时模拟方法B,并使其返回您想要的内容:
Example example = spy(new Example());
when(example.B()).thenReturn(true);
// now call A() and test that it does what it should to when B() returns true.
答案 1 :(得分:1)
我的解决方案是完全测试B
,然后在测试B
时仅测试A
的两个案例:B
何时返回true
以及何时返回false
。这两种情况可能是重复但如果您设置一个实用方法,使B
返回所需的值,则应该限制重复代码的数量。
您可以使用以下方法:
void configureB(boolean case1, boolean case2){...}
然后在完全测试B
时使用此方法并使用它来测试A