我正在尝试使用 maven-surefire-plugin 中的 parallel 选项一次运行多个测试类。下面是我的配置:
<configuration>
<argLine>-Xmx1024m -XX:MaxPermSize=1024m</argLine>
<excludes>
<exclude>**/Test*.java</exclude>
</excludes>
<runOrder>hourly</runOrder>
<parallel>classes</parallel>
<threadCountClasses>5</threadCountClasses>
</configuration>
很明显,它正在做并行测试类,但它所做的远远超出了我的预期。尽管 threadCountClasses 设置为 5,但我看到它同时执行了大约 40 个测试类。我是否误解了这些选项的工作原理?我的愿望是一次只执行五个测试类。事实上,它让我的系统窒息了 40。
我目前正在运行插件的 2.17 版本。
编辑 :CPU 内核的数量是否有可能在这里发挥作用?经过更仔细的计算,我意识到我正在使用这种配置运行 40 个测试类,并且我有 8 个内核。如果 CPU 内核不起作用,这似乎是一个巧合。
最佳答案
根据 threadCountClasses
配置条目的官方文档
在您的情况下,您没有指定 threadCount
元素,因此您应该属于第一种情况(并发类的数量),但情况似乎并非如此。
第三个和第四个案例定义了一个比率(而不是一个特定的数字),因为它似乎发生在你的案例中。然而,比率取决于您的测试类(套件,如果有的话,类和方法)而不是您的 CPU 内核。
但是, perCoreThreadCount
配置条目:
默认设置为 true
,有效影响上述动态并匹配您描述的行为(根据上述选项一)。
因此,建议将其设置为 false
。
关于java - 使用 maven surefire 插件运行多个测试类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36797288/