与普通的JUnit相比,Powermock JUnit测试需要更多的时间来执行

时间:2014-02-18 06:44:28

标签: java junit powermock

我们使用powermock通过使用@PrepareForTest注释来模拟静态方法。测试运行正常,但问题是执行测试需要更多时间。

代码段如下:

@PrepareForTest({ StaticClass1.class, StaticClass2.class })

通常,没有模拟静态方法的JUnit需要大约2秒的时间来执行,但是当我们添加@PrepareForTest注释来模拟静态调用时,测试花费大约一分钟时间来完成执行。对于一次测试,这不是一个很大的影响,但我们有超过1K的测试,整体构建时间超过2小时,之前大约需要20-30分钟。

电力公司花了这么多时间的原因可能是什么。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

PowerMock是一个在生成的类上执行字节码检测的工具。将类编译为Java Bytecode后,PowerMock会出现并修改生成的类。否则(通过使用Java代理)模拟私有或静态方法是不可能的。

您只应在要使用PowerMock独有功能的类中使用@PrepareForTest注释,例如模拟私有或静态方法。