如何在每个测试类都有自己的并行JVM的情况下运行Maven surefire?

时间:2015-02-28 16:58:26

标签: java maven junit jvm surefire

无论我使用什么设置用于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>

(我尝试了reuseForksforkCountparallelthreadCountuseUnlimitedThreadsparallelOptimized的各种组合。)

1 个答案:

答案 0 :(得分:1)

如果您正在使用JUnit,首先是&#34; parallel&#34;仅适用于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解释和示例):