【问题标题】:PowerMockito verify private method called x timesPowerMockito 验证调用 x 次的私有方法
【发布时间】:2018-01-30 02:40:29
【问题描述】:

我正在使用PowerMockito 和spy 来模拟私有方法:

final SomeClass someClass = new SomeClass();
final SomeClass spy = PowerMockito.spy(someClass);

PowerMickito.doReturn("someValue", spy, "privateMethod1");
final String response = Whitebox.invokeMethod(spy, "anotherPrivateMethod");

// I can now verify `response` is of the correct data
// But I also want to verify `privateMethod1` was called x times or so

我不知道如何验证我的方法是否被调用了 x 次。

旁注

只创建我所有的私有方法protected 然后在我的测试类中扩展该类并这样做会更好吗?

【问题讨论】:

    标签: java junit powermock powermockito


    【解决方案1】:

    这样就可以了。

    PowerMockito.doReturn("someValue", spy, "privateMethod1");
    final String response = Whitebox.invokeMethod(spy, "anotherPrivateMethod");
    assert(response)
    verifyPrivate(spy, times(1)).invoke("anotherPrivateMethod", "xyz");
    

    我假设您的私有方法(anotherPrivateMethod)采用一个参数“xyz”。您可以根据您的私有方法声明进行修改。

    【讨论】:

    • 我仍然想验证来自被调用方法的响应。我如何从您的示例中获得调用的结果?
    【解决方案2】:

    测试私有方法就是测试实现细节。 如果您选择更改实现,则测试将变得毫无价值并被丢弃。

    您应该努力测试什么,而不是如何。然后,即使您更改实现,测试也将继续存在。

    一篇关于如何避免测试附带细节的精彩论文可以在here找到。

    【讨论】:

    • 请停止...请
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多