Jav*_*kar 26 junit gradle build.gradle
我们使用Junit作为测试框架.我们有很多项目.我们使用gradle(版本1.12)作为构建工具.要使用gradle并行运行单元测试,我们在测试任务的每个项目中使用波纹管脚本.
maxParallelForks = Runtime.runtime.availableProcessors()
Run Code Online (Sandbox Code Playgroud)
例如:
test {
maxParallelForks = Runtime.runtime.availableProcessors()
}
Run Code Online (Sandbox Code Playgroud)
我们还维护单个gradle.properties文件.是否可以在gradle.properties文件中定义test.maxParallelForks = Runtime.runtime.availableProcessors(),而不是在测试任务下的每个build.gradle文件中定义?
Pet*_*ser 38
$rootDir/build.gradle:
subprojects {
tasks.withType(Test) {
maxParallelForks = Runtime.runtime.availableProcessors()
}
}
Run Code Online (Sandbox Code Playgroud)
kel*_*yfj 34
上面接受的答案有效,但此处的gradle文档建议您使用
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
Run Code Online (Sandbox Code Playgroud)
我试过两个并且在2.3 GHz英特尔酷睿i7 Mac Book Pro上测试了16GB RAM(4核超线程)
test {
maxParallelForks = Runtime.runtime.availableProcessors()
}
Run Code Online (Sandbox Code Playgroud)
和
test {
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
}
Run Code Online (Sandbox Code Playgroud)
Gradle文档建议的方法为我们的单元测试套件产生了更快的响应时间:7分钟与8分钟(与原始的13分钟相比).此外,我的Mac CPU没有被钉住,风扇也没有启动.
我假设在共享资源上存在争用 - 即使它只是我们运行单元测试的机器.
对于我们这些在 build.gralde.kts 中使用 Gradle Kotlin DSL 的人,他们在谷歌搜索后发现自己在这里,我能够让它以这种方式工作:
tasks.test {
maxParallelForks = Runtime.getRuntime().availableProcessors()
}
Run Code Online (Sandbox Code Playgroud)
或者
tasks.withType<Test> {
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).takeIf { it > 0 } ?: 1
}
Run Code Online (Sandbox Code Playgroud)
正如我在这里找到的
编辑:我遇到了一些问题,如描述在这里。这是(希望)我的最终形式:
tasks.withType<Test> {
systemProperties["junit.jupiter.execution.parallel.enabled"] = true
systemProperties["junit.jupiter.execution.parallel.mode.default"] = "concurrent"
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).takeIf { it > 0 } ?: 1
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22958 次 |
| 最近记录: |