gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:21:46 25 4
gpt4 key购买 nike

无论我对 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。)

最佳答案

如果您使用的是 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 解释和示例):

关于java - 如何在每个测试类都有自己的并行 JVM 的情况下运行 Maven surefire?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28784366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com