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

问题描述 投票:11回答:2

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

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

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

是否可以在Gradle中实现?

java unit-testing testing gradle spring-test
2个回答
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 ...
    }
  }

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的值,以便最大化加速。

© www.soinside.com 2019 - 2024. All rights reserved.