0

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

PS PowerMock 无法使用。

4

1 回答 1

3

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

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

于 2013-03-06T14:13:08.030 回答