我正在运行使用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 回答
我实际上最终找到了一个对我有用的解决方案 .
我认为问题是尝试使用forkCount / reuseForks,所以我将它们设置回默认值(如果你没有尝试覆盖基础pom中的某些东西,你也可以跳过这些属性) .
相反,我使用了parallel和threadCount . 然而,那些仅适用于TestNG,但是,我还需要它用于TestNG(而不是JUnit) .
这使得测试并行运行,但是testng-results.xml是正确生成的(没有被并行运行的每个测试覆盖) .
更多细节在这里:
这是我现在的插件配置:
显然,线程数可能更低或更高,具体取决于您要执行的操作/服务器具有的规范,您可以根据您是要运行类还是其他一些“级别”来更改设置 .
此外,如果选择使用套件文件,则可以将parallel和threadCount与套件文件中的任何其他属性一起配置 .