1

我正在使用surefire运行并行执行的测试,这一切似乎都很好。

但是,在 target/surefire-reports/ 文件夹中只生成了一个 testng-results.xml,其中...仅包含最后运行的测试结果。

我发现了一个针对旧版本的surefire报告的问题,它在这里说“不会修复”:

但是,我怀疑我是这个星球上第一个尝试与 Jenkins 并行运行单元测试并希望使用 TestNG Jenkins 插件正确显示结果的人,所以我很确定必须有一个解决方案, 正确的?

这是我的万无一失的插件配置:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>${basepom.plugin.surefire.version}</version>
      <configuration>
        <forkCount>2.5C</forkCount>
        <reuseForks>false</reuseForks>
      </configuration>
    </plugin>

这是surefire配置顺便说一句的链接:

4

1 回答 1

0

实际上,我最终找到了适合我的解决方案。

我认为问题在于尝试使用 forkCount/reuseForks 来实现,所以我将它们设置回默认值(如果你不想从基础 pom 等中覆盖某些东西,你也可以跳过这些属性)。

相反,我使用了并行和线程计数。然而,这些仅适用于 TestNG,但是,我也需要它用于 TestNG(而不是 JUnit)。

这使得测试并行运行,但 testng-results.xml 生成正确(不会被并行运行的每个测试覆盖)。

更多细节在这里:

这是我现在拥有的插件配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <!-- those are the two default values, you can probably skip them -->
    <forkCount>1</forkCount>
    <reuseForks>true</reuseForks>
    <!-- that's what made it work -->
    <parallel>classes</parallel>
    <threadCount>10</threadCount>
  </configuration>
</plugin>

显然,线程数可能会更低或更高,具体取决于您想要做什么/服务器的规格,您可以根据您是要运行类还是并行运行其他“级别”来更改设置。

此外,如果您选择使用套件文件,您可以在套件文件中配置并行和线程计数以及任何其他属性。

于 2015-03-06T04:38:34.207 回答