我们使用 JUnit 作为测试框架。我们有很多项目。我们使用 gradle(版本 1.12)作为构建工具。为了使用 gradle 并行运行单元测试,我们在测试任务下的每个项目中使用以下脚本。
maxParallelForks = Runtime.runtime.availableProcessors()
例如:
test {
maxParallelForks = Runtime.runtime.availableProcessors()
}
我们还维护单个 gradle.properties 文件。
是否可以在 gradle.properties 文件中定义 test.maxParallelForks = Runtime.runtime.availableProcessors() 而不是在测试任务下的每个 build.gradle 文件中定义它?
最佳答案
上面接受的答案有效,但是 Gradle 文档 here建议您使用
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
我尝试了这两种方法,并在配备 16GB RAM(4 核,超线程)的 2.3 GHz Intel Core i7 Mac Book Pro 上进行了测试
test {
maxParallelForks = Runtime.runtime.availableProcessors()
}
和
test {
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
}
Gradle 文档建议的方法为我们的单元测试套件提供了更快的响应时间:7 分钟与 8 分钟相比(与原来的 13 分钟相比)。此外,我的 Mac CPU 没有被固定,风扇也没有启动。
我假设共享资源上存在争用 - 即使它只是我们正在运行单元测试的机器。
关于junit - 使用 gradle 运行并行测试任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805915/