如何在Gradle中将参数传递给分叉测试过程?

如何在Gradle中将参数传递给分叉测试过程?,gradle,Gradle,我正在与Gradle并行运行UI测试: build.gradle: 我想把一系列的过程1,2,3,4传递给这些分叉的过程中的每一个 目标是使这些测试使用不同的虚拟显示。这样这些UI测试就不会相互冲突。理想情况下,我希望将系统属性DISPLAY=:15:1、DISPLAY=:15:2、DISPLAY=:15:3、DISPLAY=:15:4传递给分叉进程。我讨厌成为一名necroposter,但我遇到了同样的问题,即如何利用分叉进程作为索引并设法解决它,所以下面的解决方案可能会对某些人有所帮助 从类

我正在与Gradle并行运行UI测试:

build.gradle:

我想把一系列的过程1,2,3,4传递给这些分叉的过程中的每一个


目标是使这些测试使用不同的虚拟显示。这样这些UI测试就不会相互冲突。理想情况下,我希望将系统属性DISPLAY=:15:1、DISPLAY=:15:2、DISPLAY=:15:3、DISPLAY=:15:4传递给分叉进程。

我讨厌成为一名necroposter,但我遇到了同样的问题,即如何利用分叉进程作为索引并设法解决它,所以下面的解决方案可能会对某些人有所帮助

从类似的问题开始,Gradle将把唯一的org.Gradle.test.worker属性传播到每个分叉的JVM。不幸的是,这些辅助属性不是从1开始的,因此不能直接用作索引值,但我发现它们是按顺序出现的。例如,对于maxParallelForks=3,每个分叉进程可以有org.gradle.test.worker=33、org.gradle.test.worker=34和org.gradle.test.worker=35。多亏了这一点,我们可以从工人那里建立指数

build.gradle:

Java中的某个地方:


目前,您无法将系统属性专门传递给分叉进程。您可能需要在测试类级别实现此功能。好的,谢谢。不,不幸的是,它不能在测试类中实现。必须在分叉进程之前设置系统属性。它只能在Gradle tests runner内部实现。
test {
  maxParallelForks = 4
}
test {
    maxParallelForks = 4
    systemProperty 'forks', maxParallelForks
}
Integer maxForks = Integer.valueOf(System.getProperty("forks", "1"));
Integer worker = Integer.valueOf(System.getProperty("org.gradle.test.worker", "1"));
int index = (worker % maxForks) + 1; // index will be 1, or 2, or 3 or 4