如何使用junit和easymock模拟静态方法

时间:2013-03-06 14:11:21

标签: java junit easymock jmock

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

P.S。无法使用PowerMock。

1 个答案:

答案 0 :(得分:3)

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

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