在为另一个方法调用的方法编写junit代码时,避免重复代码

时间:2013-05-09 14:00:48

标签: junit

我是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;
}

}

感谢。

2 个答案:

答案 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

的两个条件