【发布时间】:2014-02-18 06:44:28
【问题描述】:
我们正在使用 powermock 通过使用 @PrepareForTest 注释来模拟静态方法。测试运行良好,但问题是执行测试需要更多时间。
sn-p的代码如下:
@PrepareForTest({ StaticClass1.class, StaticClass2.class })
通常,没有模拟静态方法的 JUnit 需要大约 2 秒的时间来执行,但是当我们添加 @PrepareForTest 注释来模拟静态调用时,测试需要大约一分钟的时间来完成执行。对于一个测试,这不是一个很大的影响,但我们有超过 1K 的测试,整个构建时间需要超过 2 小时,而之前大约需要 20 到 30 分钟。
powermock 花费这么多时间的原因可能是什么。
任何帮助将不胜感激。
【问题讨论】:
-
powermock 执行的工具不是免费的。
-
如果您的所有测试都需要 powermock,那么您可能遇到了严重的设计问题。尝试编写可测试的代码,即不需要 powermock 的黑魔法来测试的代码。使用依赖注入。
-
感谢您的快速回复。但是你能告诉我你所说的仪器不是免费的吗?
-
嗨 Nizet,我不需要 powermock 进行所有测试。可能用于大约 100 次测试,我需要使用它。但由于这些测试,它需要更多的时间。如果我从测试套件中删除这些并运行,那么它的工作速度非常快。
-
然后尝试在两个单独的运行中运行 powermock 测试和“正常”测试。