【问题标题】:How to mock static method while using Spring Boot?使用 Spring Boot 时如何模拟静态方法?
【发布时间】:2020-10-08 20:25:18
【问题描述】:

我需要模拟一个静态方法。我知道有两个工具可以帮助做到这一点:PowerMockito 和 JMockit,它们都需要使用 @RunWith 注释。但是,我已经为 SpringRunner 使用了 @RunWith 来设置一些 @Autowired 依赖项,以及 it seems you can't use @RunWith twice

I see that PowerMockito has a PowerMockRunnerDelegate,看起来很有希望。但由于种种原因,我现在一直坚持使用 JMockit。是否有与之对应的 JMockit?

我基本上需要模拟一个静态方法并同时为我的测试设置@Autowired 依赖项。

【问题讨论】:

  • JMockit 从来不需要使用@RunWith。不久前它支持,但现在不再支持了。

标签: spring-boot junit junit4 jmockit


【解决方案1】:

看来我可以通过wrapping the static method call 避免使用任何专门的静态模拟工具。

【讨论】:

  • JMockit 不是一个“专门的”模拟工具。事实上,它比任何其他用于 Java 的模拟库都更“功能完整”。它实际上已经不仅仅是一个模拟库。我个人更多地将它用于集成测试,而不是单元测试。
【解决方案2】:

最新版本的 jmockit (1.49) 没有使用 @RunWith 注解。相反,它让您将 javaagent 设置为 vmarg。 jmockit 网站上有完整的文档:https://jmockit.github.io/tutorial/Introduction.html#runningTests。我绝对鼓励您使用 JMockIt 而不是 EasyMock+PowerMock 组合,JMockIt 是独立的,可以自然地处理静态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 2010-09-14
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2014-08-30
    • 2014-02-02
    相关资源
    最近更新 更多