【问题标题】:Mocking private static method from a final class (utility class)从最终类(实用程序类)模拟私有静态方法
【发布时间】:2013-12-23 14:55:50
【问题描述】:

我正在使用 Mockito 和 PowerMock 对我的 Java 应用程序进行一些测试。我想知道如何从最终类中模拟私有静态方法。我想在访问一种方法时模拟Exception,但我发现这样做的唯一方法是如果可以实例化该类并使用 PowerMock 中的spy() 方法。

谁能帮助/指导我一点?

【问题讨论】:

  • 如果您可以控制最终类中的私有静态方法,您可能会发现将方法重构为非最终实用程序类中的实例方法会更容易。如果您的代码足够复杂以至于需要异常处理,那么它可能足够复杂,可以完全成为一个独立的可模拟组件。 (可能不适用于您,但可能适用于阅读此答案的下一个编码人员。)

标签: java mocking mockito powermock


【解决方案1】:

这是example using PowerMock to mock public static methods

如果是私有方法,则必须在某处模拟一些public static 方法来调用此私有方法,因为您不能直接调用它。如果您只对异常感兴趣,您可能会更早地抛出异常(也许 - 许多假设)

【讨论】:

  • 我不是从公共静态方法调用此方法,而是在静态块中调用它以在加载类时执行它。也许我应该改变这种行为......
  • 好吧,我看不到全貌。也许在这里粘贴完整的代码 sn-p,包含调用者和被调用者。
  • 我已经更改了我的应用程序的设计,以便我可以按照您最初的建议进行操作。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多