Gradle允许我像这样启动多个jvm进行测试:
test {
maxParallelForks = 10
}
我对某个应用程序进行的一些测试需要一个需要端口的假ftp服务器。使用一个jvm做到这一点非常容易:
test {
systemProperty 'ftpPort', 10000
}
但是,当并行运行时,我需要启动10个伪造的ftp服务器。如何为gradle产生的每个jvm添加自定义系统属性?
类似:
test {
maxParallelForks 10
customizeForks { index ->
systemProperty 'ftpPort', 10000 + index
}
}
分叉之前没有设置任务。但是,您可以在项目中覆盖测试任务以实现该行为(此处为Java),因为Test任务只是一个类:
public class ForkTest extends org.gradle.api.tasks.testing.Test {
private final AtomicInteger nextPort = new AtomicInteger(10000);
public Test copyTo(JavaForkOptions target) {
super.copyTo(target);
target.systemProperty("ftpPort", nextPort.getAndAIncrement());
return this;
}
}
然后在您的build.gradle中:
task testFork(Type: ForkTest){
forkEvery = 1
maxParallelForks = 10
...
}