【问题标题】:How to mock static method using junit and easymock [duplicate]如何使用junit和easymock模拟静态方法[重复]
【发布时间】:2013-03-06 14:11:21
【问题描述】:

接下来的问题是:我需要测试私有类的方法methodTest()methodTest() 从外部库调用静态方法 staticExternal()。 如果我使用 JMock 和 EasyMock,但包含 staticExternal()没有接口?

附:无法使用 PowerMock。

【问题讨论】:

  • 可能thesetwo已经回答了这个问题
  • 您为什么拒绝 PowerMock,因为它是解决您遇到的问题的简单而正确的解决方案?如果你想要一个有约束的答案,你必须解释原因。
  • @AndrewAylett 我知道 PowerMock 是一个很好的框架。不幸的是,我有这样的锻炼。谢谢大家!

标签: java junit easymock jmock


【解决方案1】:

据我所知,你不能。基本上,该代码很难测试。您应该考虑提取一个依赖项,该依赖项的“正常”实现调用静态方法。

从根本上说,静态方法调用很难精确替换,因为它们是静态的。为了拦截静态方法调用,PowerMock 之类的工具必须适应 Java 的核心(替换类加载器等)。在我看来,通常最好重构你的代码,这样它就可以在没有这种东西的情况下进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2017-05-19
    • 2012-03-30
    • 1970-01-01
    相关资源
    最近更新 更多