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

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()