与surefire并行运行测试并使用TestNG Jenkins插件正确显示它们

时间:2015-03-05 16:39:52

标签: jenkins testng maven-surefire-plugin parallel-testing

我使用surefire运行并行执行测试,而且一切似乎都运行良好。

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

我发现了一个完全针对旧版本的万无一失的报道的问题,并且它说"不会修复"这里:

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

这是我的surefire插件配置:

    <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配置btw的链接:

1 个答案:

答案 0 :(得分:0)

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

我认为问题是尝试使用forkCount / reuseForks,所以我将它们设置回默认值(如果你不试图覆盖基础pom中的某些内容,你也可以跳过这些属性。 )。

相反,我使用了parallel和threadCount。然而,那些仅适用于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>

显然,线程数可能会更低或更高,具体取决于您要执行的操作/服务器具有的规范,您可以根据是否要运行类或其他某些“级别”来更改设置

此外,如果您选择使用套件文件,则可以将parallel和threadCount与套件文件中的任何其他属性一起配置。