测试结果在 Jenkins 中显示为失败的重复条目

Test results are displayed with duplicate entries for failures in Jenkins

我正在使用 surefire 报告插件在 Jenkins 中记录 SoapUI 测试结果。

<groupId>com.smartbear.soapui</groupId>
            <artifactId>soapui-pro-maven-plugin</artifactId>
            <version>5.1.2</version>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <projectFile>${basedir}/i-services-bkt.xml</projectFile>
                        <outputFolder>${basedir}/target/surefire-reports</outputFolder>
                        <junitReport>true</junitReport>
                        <junitHtmlReport>false</junitHtmlReport>
                        <exportAll>true</exportAll>
                        <printReport>true</printReport>
                        <testFailIgnore>true</testFailIgnore>
                    </configuration>
                </execution>
            </executions>

在 Jenkins 上 运行 完成作业后,我在报告中看到每个失败都有两个条目。我有 post 发布 JUnit 报告的构建操作。

真正的问题出在 Jenkins 身上。 Jenkins post-build 动作有一个 "Publish JUnit Test Results Report" 动作。这需要输入目标报告路径。如果你使用

target/surefire-reports/*-xml

结果将报告两次。您需要通过 /TEST*-xml 以获得仅报告一次的结果。

我使用 surefire-testng 来 运行 junit 测试,但在同一个 运行.

中没有任何 testng 测试

我使用以下方法提取报告:

**/surefire-reports/*.xml

您可以配置 surefire-testng 以包含或排除任何测试,也许您可​​以按模式排除 junit 测试,然后使用 junit 提供程序 运行 那些。

surefire-reports 也可以配置为收集 junit and/or testng 报告。

以后的 junit 测试使用注释而不是命名约定。 testng 似乎认识到这一点,但 surefire-reports 的默认行为似乎只是通过命名约定收集数据。

因此,您需要为单位传递 /TEST*-xml 并为积分传递 /IT*-XML 以获得仅报告一次的结果。它可以让你更好地控制 surefire 和 failsafe。