0

我是 Junit 的新手。我在测试类中有两种方法。方法 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;
}

}

谢谢。

4

2 回答 2

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.
于 2013-05-09T14:21:35.393 回答
1

我的解决方案是全面测试B,然后只测试两种B何时测试A:何时B返回true和何时返回false。这两种情况可能会重复,但是如果您设置了一个实用方法B来返回所需的值,那么应该限制重复代码的数量。

你可以有这样的方法:

void configureB(boolean case1, boolean case2){...}

然后在充分测试的时候用这个方法B,用它来测试两个条件A

于 2013-05-09T14:28:23.633 回答