【问题标题】:How to test in scenario many methods calling one helper method如何在场景中测试多个调用一个辅助方法的方法
【发布时间】:2016-04-07 16:52:52
【问题描述】:

例如,这是我的场景:

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 测试。

谢谢:)

【问题讨论】:

    标签: android unit-testing testing powermockito


    【解决方案1】:

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

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

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

    【讨论】:

    • 所以我们仍然测试A_C1() A_C2() B_C1() B_C2() 但是使用你提到的一些方法来保存重复代码。对吗?
    • 如果A()B() 中的代码路径不依赖于C(),那么 - 不,您将只测试ABC_1, C_2`。我已经创建了一个code examples hot 它在不同情况下的样子
    猜你喜欢
    • 2011-03-27
    • 2011-08-03
    • 1970-01-01
    • 2014-01-02
    • 2011-10-26
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多