我们使用powermock通过使用@PrepareForTest
注释来模拟静态方法。测试运行正常,但问题是执行测试需要更多时间。
代码段如下:
@PrepareForTest({ StaticClass1.class, StaticClass2.class })
通常,没有模拟静态方法的JUnit需要大约2秒的时间来执行,但是当我们添加@PrepareForTest
注释来模拟静态调用时,测试花费大约一分钟时间来完成执行。对于一次测试,这不是一个很大的影响,但我们有超过1K的测试,整体构建时间超过2小时,之前大约需要20-30分钟。
电力公司花了这么多时间的原因可能是什么。
非常感谢任何帮助。
答案 0 :(得分:5)
PowerMock是一个在生成的类上执行字节码检测的工具。将类编译为Java Bytecode后,PowerMock会出现并修改生成的类。否则(通过使用Java代理)模拟私有或静态方法是不可能的。
您只应在要使用PowerMock独有功能的类中使用@PrepareForTest
注释,例如模拟私有或静态方法。