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

2024-02-19

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

代码片段如下:

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

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

powermock 花费如此多时间的原因可能是什么?

任何帮助将不胜感激。


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

你应该只使用@PrepareForTest仅在那些您想要使用 PowerMock 专有功能的类中添加注释,例如模拟私有或静态方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐