首页 文章

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

提问于
浏览
1

我正在运行使用surefire进行并行执行的测试,而且一切似乎都正常 .

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

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

但是,我怀疑我是地球上第一个尝试与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>

这是确保配置btw的链接:

1 回答

  • 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与套件文件中的任何其他属性一起配置 .

相关问题