【发布时间】:2018-02-14 09:49:23
【问题描述】:
我正在将代码库从 Maven 迁移到 Gradle。
在我们的集成测试中,我们使用 FailSafe 功能在多个线程中并行运行测试。
FailSafe 正在设置系统属性名称surefire.forkNumber 与当前线程运行的特定分支的编号。
使用 Gradle 运行 JUnit 时是否有等效参数?
【问题讨论】:
我正在将代码库从 Maven 迁移到 Gradle。
在我们的集成测试中,我们使用 FailSafe 功能在多个线程中并行运行测试。
FailSafe 正在设置系统属性名称surefire.forkNumber 与当前线程运行的特定分支的编号。
使用 Gradle 运行 JUnit 时是否有等效参数?
【问题讨论】:
Gradle 中的test 任务具有maxParallelForks 属性来指示测试并行运行。
要从命令行传递一个属性来设置值,我们可以在我们的构建文件中定义以下test 配置:
// File: build.gradle
...
// Set maxParallelForks using project property
// testMaxParallelForks if set otherwise use 1.
test.maxParallelForks = project.findProperty('testMaxParallelForks') ?: 1
...
然后我们可以从命令行运行test任务:$ gradle test -PtestMaxParallelForks=8
Gradle 使用运行测试的线程的索引号设置 Java 系统属性 org.gradle.test.worker。可以在并行线程上运行的测试中读取和使用此属性。
【讨论】:
maxParallelForks 设置为3,则三个线程中的每一个都将具有surefire.forkNumber=1、surefire.forkNumber=2、和surefire.forkNumber=3。不知道 Gradle 的 JUnit runner 中是否有类似的东西?