我正在与Gradle并行运行UI测试:
的build.gradle:
test {
maxParallelForks = 4
}
我想将个进程(1,2,3,4)传递给每个分叉进程?
目标是使这些测试使用不同的虚拟显示。这样UI测试就不会相互冲突。理想情况下,我想传递系统属性 DISPLAY =:15:1 , DISPLAY =:15:2 , DISPLAY =:15:3 , DISPLAY =:15:4 分叉进程。
答案 0 :(得分:0)
我讨厌成为死灵海报,但我遇到了同样的问题(如何将分叉过程用作 index )并设法解决了这个问题,因此下面的解决方案可能会对某人有所帮助。
从mrhaki's answer开始,Gradle将向每个派生的JVM传播唯一的org.gradle.test.worker
属性。对于我来说不幸的是,这些工作程序属性不是从1开始的(因此不能直接用作索引值),但是我发现它们是按顺序出现的。例如。对于maxParallelForks = 3
,每个分支过程可以有org.gradle.test.worker = 33
,org.gradle.test.worker = 34
和org.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