如何在场景中测试多个调用一个辅助方法的方法

时间:2016-04-07 16:52:52

标签: android unit-testing testing powermockito

例如,这是我的情景:

function A() {
   C();
}

function B() {
   C();
}

function C() {
   if (someState > 0) then doSomething();
   else doSomethingElse();
}

我想让覆盖所有代码的所有测试用例。由于C()具有测试C()的条件,因此我们需要两种测试方法:testC1()testC2()。因此总测试为:testA_C1() testA_C2() testB_C1() testB_C1()。当条件更多时,测试方法的数量会急剧增加,并且有更多方法使用相同的方法C()

此处的问题是:C()不依赖于A()B()的任何状态,因此实际上我认为C()可以单独测试。所以我认为我们可以节省大量的单元测试。

我的问题是:如何在这种情况下进行测试。我正在使用Powermock进行Android测试。

谢谢:)

1 个答案:

答案 0 :(得分:1)

如果您说c()并不取决于a()b()的状态,那么您可以进行extract method object 重构并单独测试。如果您使用工厂,那么您将不再需要PowerMock。

如果a()b()不依赖于c()结果,则可以使用suppress method

如果a()b()取决于c()结果,那么您可以创建部分模拟(通过使用间谍)并模拟c()