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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Gradle中为单个测试类并行执行JUnit测试相关的知识,希望对你有一定的参考价值。

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

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

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

是否可以在Gradle中实现?

答案

@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 ...
    }
  }
另一答案

春天5:街区新生儿

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

有关更多信息,请参阅Baeldung's blog


原始答案:

这里是Gradle doc在Gradle中解释Java插件的任务,here is API doc向所述插件解释参数。

请仔细查看forkEverymaxParallelForks参数。

设置这些应该给你足够的控制来实现并行测试执行。

这里是the SO answer指向应该设置maxParallelForks的值,以便最大化加速。

以上是关于如何在Gradle中为单个测试类并行执行JUnit测试的主要内容,如果未能解决你的问题,请参考以下文章

在 Maven 构建中并行运行 junit 测试?

并行 JUnit 测试不执行关闭挂钩

Serenity Junit - 如何通过 mvn 命令使用 serenity 执行指定的单个测试 [重复]

使用 gradle 运行并行测试任务

如何在多模块项目中使用 JUnit5 和 SpringBoot2 通过 gradle 而不是 intelliJ 运行测试

Maven 和 JUnit 5:在一个类中运行单个测试