【问题标题】:How to run Maven surefire where each test class has its own parallel JVM?如何在每个测试类都有自己的并行 JVM 的情况下运行 Maven surefire?
【发布时间】:2015-02-28 16:58:26
【问题描述】:

无论我对 Maven + Surefire 使用什么设置,我从来没有看到在我的进程管理器中生成了多个 JVM。我有一台具有 8 个物理内核的 Windows 7 PC。我正在运行最新的 Maven / Surefire / JUnit 和 JDK8(32 位)。

我尝试将所有测试分解为每个测试类一个测试。 (我读到 JVM 只用于测试类,而不是测试方法。)不过,我在进程管理器中从来没有看到超过一个 JVM。

理想情况下,我希望每个测试类都运行一个单独的 JVM -- 并行 8 个(每个内核一个/不要重复使用 JVM)。

需要哪些 Maven Surefire 设置?

以下内容对我不起作用:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin.version}</version>
            <configuration>
                <includes>
                    <include>${default.test.suite}</include>
                </includes>
                <reuseForks>false</reuseForks>
                <forkCount>1.0C</forkCount>
                <parallel>classes</parallel>
                <threadCount>1</threadCount>
<!--
                <useUnlimitedThreads>true</useUnlimitedThreads>
                <parallelOptimized>false</parallelOptimized>
-->
            </configuration>
        </plugin>

(我尝试了reuseForks、forkCount、parallel、threadCount、useUnlimitedThreads 和 parallelOptimized 的各种组合。)

【问题讨论】:

  • 您使用的是 TestNG 还是 JUnit?您的插件版本是什么,您使用的 TestNG/JUnit 版本是什么?
  • 这句话说明了一切:I am running the latest Maven / Surefire / JUnit and JDK8 (32-bit).

标签: java maven junit jvm surefire


【解决方案1】:

如果您使用的是 JUnit,首先“并行”仅适用于 TestNG,其他一些属性也是如此,因此它们对您没有帮助/兴趣:

以下是在 JUnit 设置中对我们有用的方法(不适用于 TestNG,因为刚刚在此处发布:Running test in parallel with surefire and displaying them properly with the TestNG Jenkins plugin):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <reuseForks>false</reuseForks>
    <forkCount>2.5C</forkCount>
  </configuration>
</plugin>

所以我认为你需要增加你的 forkCount(forkCount = 1.0 你不会得到并行的东西)。

作为参考,这里有更多关于并行运行测试的小字(包括 forkCount 解释和示例):

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2011-06-13
  • 2021-05-16
  • 2019-09-30
  • 1970-01-01
  • 2016-11-04
相关资源
最近更新 更多