testing - 如何在并行测试时为每个 jmv gradle spawn 设置不同的系统属性?

标签 testing gradle

Gradle 允许我像这样启动多个 jvm 进行测试:

test {
   maxParallelForks = 10
}

我的应用程序的一些测试需要一个需要端口的假 ftp 服务器。使用一个 jvm 很容易做到这一点:

test {
   systemProperty 'ftpPort', 10000
}

但是,当并行运行时,我需要启动 10 个假的 ftp 服务器。如何为 gradle 生成的每个 jvm 添加自定义系统属性?

类似于:

test {
   maxParallelForks 10
   customizeForks { index ->
       systemProperty 'ftpPort', 10000 + index
   }
}

最佳答案

fork 前后无需设置任务。但是,您可以覆盖项目中的测试任务以实现行为(在 Java 中),因为测试任务只是一个类:

  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
   ... 
}

关于testing - 如何在并行测试时为每个 jmv gradle spawn 设置不同的系统属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972781/

相关文章:

android - 升级到 Android Studio 3.4 - Aapt2InternalException : AAPT2: Daemon startup failed

gradle - Gradle 4.4需要Java 7或更高版本才能运行。您的构建当前已配置为使用Java 6

java - 将 AbstractHandler 映射到嵌入式服务器 (Jetty) 的特定路径

android - 隔离测试 APK 构建

ruby - 运行另一组测试时停止从 spec 目录加载 spec_helper

testing - 如何单击溢出 :hidden in cucumber/capybara 的元素

java - Android Gradle 依赖排除

android - Gradle - Proguard 配置是否继承?

testing - 开源自动化测试工具和框架是否比商业产品更好?

Python/tox 将依赖项安装为可编辑