如何在场景中测试许多调用一个辅助方法的方法
How to test in scenario many methods calling one helper method
例如这是我的场景:
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 测试。
谢谢:)
如果如您所说 c()
不依赖于 a()
和 b()
的状态,那么您可以进行 extract method object 重构并单独测试它。如果您使用工厂,那么您将不需要 PowerMock。
如果 a()
和 b()
不依赖于 c()
结果,则可以使用 suppress method。
如果 a()
和 b()
取决于 c()
结果,那么您可以创建部分模拟(通过使用间谍)并模拟 c()
。
例如这是我的场景:
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 测试。
谢谢:)
如果如您所说 c()
不依赖于 a()
和 b()
的状态,那么您可以进行 extract method object 重构并单独测试它。如果您使用工厂,那么您将不需要 PowerMock。
如果 a()
和 b()
不依赖于 c()
结果,则可以使用 suppress method。
如果 a()
和 b()
取决于 c()
结果,那么您可以创建部分模拟(通过使用间谍)并模拟 c()
。