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

时间:2015-02-05 13:24:38

标签: java unit-testing testing gradle spring-test

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

我们希望单个测试类并行执行测试,例如Maven http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html和并行选项

  

并行选项要记住的重要事项是:   并发发生在同一个JVM进程中。

是否可以在Gradle中实现?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

春天5:街区的新生儿

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

有关详细信息,请参阅Baeldung's blog


原始答案:

以下是Gradle doc解释Gradle中Java插件的任务,以及here is API doc解释所述插件的参数。

请仔细查看forkEverymaxParallelForks参数。

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

以下the SO answer指出应设置的值maxParallelForks,以便最大限度地提高速度。