【问题标题】:In JUnit-5, How do I mock a static method that returns void? Can we use import org.mockito.MockedStatic?在 JUnit-5 中,如何模拟返回 void 的静态方法?我们可以使用 import org.mockito.MockedStatic 吗?
【发布时间】:2020-11-07 02:17:53
【问题描述】:

我的项目中有一些 3rd 方静态 util 方法,其中一些只是通过或抛出异常。有很多关于如何使用 PowerMock 模拟静态方法的示例,但 Junit5 不支持 PowerMock,它的返回类型不是 void。但是我怎样才能模拟一个返回 void 的静态方法只是“doNothing()”呢?

【问题讨论】:

    标签: java mockito junit5 powermock powermockito


    【解决方案1】:

    不要嘲笑它。根据您的最小描述,您可以将使用站点替换为 Consumer 并提供一个模拟。 (您甚至可以使用对静态方法的方法引用来初始化字段,并且只需使用 setter 方法来覆盖它们。)

    然而,被测类调用这些静态方法这一事实通常只是测试不应该关心的实现细节,只检查可观察到的行为。

    【讨论】:

    • 感谢您的回复,但要运行我的测试,我必须调用该静态 void Util 方法。在 Junit-5 中,我没有看到模拟静态 void 方法的方法。
    【解决方案2】:

    在其上构建一个包装器类,调用包装器方法,如果您可以做不同的行为或者可以模拟调用类/方法的包装器,那么您可以在测试中使用不同的包装器,

    【讨论】:

    • 你能分享一个同样的例子吗?
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多