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

时间:2015-02-12 21:43:21

标签: gradle

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

的build.gradle:

test {
  maxParallelForks = 4
}

我想将个进程(1,2,3,4)传递给每个分叉进程?

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

1 个答案:

答案 0 :(得分:0)

我讨厌成为死灵海报,但我遇到了同样的问题(如何将分叉过程用作 index )并设法解决了这个问题,因此下面的解决方案可能会对某人有所帮助。

mrhaki's answer开始,Gradle将向每个派生的JVM传播唯一的org.gradle.test.worker属性。对于我来说不幸的是,这些工作程序属性不是从1开始的(因此不能直接用作索引值),但是我发现它们是按顺序出现的。例如。对于maxParallelForks = 3,每个分支过程可以有org.gradle.test.worker = 33org.gradle.test.worker = 34org.gradle.test.worker = 35。多亏了这一点,我们可以从工人那里建立索引。

build.gradle:

test {
    maxParallelForks = 4
    systemProperty 'forks', maxParallelForks
}

Java中的某个地方

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