如何在 Gradle 中为单个测试类并行执行 JUnit 测试

我们有很多使用Spring的集成测试。我们不希望为每个测试创建单独的JVM进程(maxParallelForks选项),或者只在多模块项目中运行并行构建(--parallel)。

我们希望单个测试类并行执行测试,就像在 Maven 中一样,具有 http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html 和并行选项

使用并行选项要记住的重要一点是:并发发生在相同的JVM进程中。

有可能在Gradle中实现吗?


答案 1

@MariuszS答案是最好的

Gradle是没有xml的蚂蚁,也许这可以帮助你 ant.apache.org/manual/Tasks/parallel.html:)

这里描述了实现它的最接近的方法-https://discuss.gradle.org/t/how-to-use-ants-parallel-target/6720/5

task runAllTestsByGroups << {
      ant.parallel(threadsPerProcessor: 1) {
                    ant.junit (...) {
            // run test group 1
            ...
        }
          ant.junit(...) {
            // run test group 2
            ...
       }
         // run group 3, 4, 5 ...
    }
  }

答案 2

春季5:街区的新孩子

从 Spring 5 开始,您可以并行运行 Junit 测试(使用 Spring TestContext Framework),我认为这正是您正在寻找的:在同一 JVM 中同时执行。

请参阅Baeldung的博客以获取更多信息。


原答:

这是Gradle文档,解释了Gradle中Java插件的任务,这里是API文档,解释了所述插件的参数。

请仔细查看 forkEverymaxParallelForks 参数。

设置这些应该为您提供足够的控制来实现并行测试执行。

以下是SO答案,指出应将值设置为什么值,以便最大限度地提高速度。maxParallelForks


推荐