我正在尝试使用 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/

10-11 16:17