为什么第一次测试 运行 和 Robolectric 花了这么长时间?

Why is does the first test run with Robolectric taking so long?

我正在用 Robolectric 测试我的 Android 应用程序,但我遇到了一个奇怪的情况。发生的事情是,当我 运行 一些测试集时,第一个测试 运行 和 Robolectric 比任何其他测试花费更多的时间。它不是特定于测试本身,因为我根据测试顺序尝试了不同的配置,结果是第一个测试总是最慢的。

是否有任何 Robolectric 设置时间或类似时间?提供的任何信息都是有用的。

例如:

是的,这是设置时间。不幸的是,没有一个中心位置可以让您收集有关 Robolectric 的所有信息。

观看 this presentation,您会在第 28、29、30、35 页找到更多解释。

如果您有兴趣,Robolectric 更改了 2.0 版中的一些方法。重大变化是:

  1. Javaassist 用法替换为 ASM 用法 - 加速开始时间
  2. 他们试图减少影子的数量 类 并使用 ASOP Android 代码来代替 - 为了更好的测试可靠性

如果您使用 gradle,那么也请查看 robolectric gradle plugin。添加的 运行 并行测试和其他调整选项。 运行 并行测试显然只对大量测试有用(数百+)