例如,这是我的情景:
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测试。
谢谢:)
答案 0 :(得分:1)
如果您说c()
并不取决于a()
和b()
的状态,那么您可以进行extract method object 重构并单独测试。如果您使用工厂,那么您将不再需要PowerMock。
如果a()
和b()
不依赖于c()
结果,则可以使用suppress method。
如果a()
和b()
取决于c()
结果,那么您可以创建部分模拟(通过使用间谍)并模拟c()
。