在上面的解释中,当您在 Jenkins 下的 Post 任务中重新运行测试时,failed-testng.xml 似乎会被删除,因为当您运行“mvn clean”时,它将删除存在 failed-testng.xml 的目标文件夹。要验证这一点,您需要访问 Jenkins 工作区,但您的软件测试公司可能无权访问它。
进一步按照以下步骤,他们将解决问题:
首先,您的 pom 应该可以配置为从命令行运行测试:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<forkCount>0</forkCount>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
然后为 Post 构建(您已经在做)配置 jenkins 以运行 failed-testng.xml。
但首先您必须将 failed-testng.xml 从目标文件夹复制/移动到框架内的任何其他文件夹(目标和测试输出文件夹除外,因为当您运行命令“mvn clean”时这些文件夹会被删除)。
以下是用于将文件从一个位置复制/移动到另一个位置的 Maven 插件:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/failed-testng.xml</outputDirectory>
<resources>
<resource>
<directory>src/</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
注意:此插件必须在测试执行后执行。