谁能帮我找到一种方法,这样我就可以在执行一次套件后一起执行所有失败的测试类。
就像我有
<test name="Transaction Module" preserve-order="true" >
<classes>
<class name="com.uniteller.tests.ABC" />
<class name="com.uniteller.tests.XYZ" />
</classes>
</test>
<test name="Beneficiary Module" preserve-order="true" >
<classes>
<class name="com.uniteller.tests.PQR" />
<class name="com.uniteller.tests.LMN" />
</classes>
</test>
并且类 ABC 和 LMN 中存在故障,因此我想在套件执行一次后再次执行这两个类。
5.12 - 重新运行失败的测试
每次套件中的测试失败时,TestNG 都会在输出目录中创建一个名为 testng-failed.xml 的文件。此 XML 文件包含仅重新运行这些失败的方法所需的信息,使您可以快速重现失败,而无需运行整个测试。 因此,典型的会话如下所示:
java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs testng.xml java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs test-outputstestng-failed.xml
请注意,testng-failed.xml 将包含所有必要的依赖方法,以便保证您运行失败的方法而不会出现任何 SKIP 故障。
有时,您可能希望 TestNG 在测试失败时自动重试测试。在这些情况下,可以使用重试分析器。将重试分析器绑定到测试时,TestNG 会自动调用重试分析器,以确定 TestNG 是否可以再次重试测试用例,以尝试查看刚刚失败的测试现在是否通过。以下是使用重试分析器的方法:
下面是重试分析器的示例实现,该分析器最多重试测试三次。
- 构建接口 org.testng.IRetryAnalyzer 的实现
- 将此实现绑定到例如 @Test(retryAnalyzer = LocalRetry.class( 的@Test注释
import org.testng.IRetryAnalyzer; import org.testng.ITestResult; public class MyRetry implements IRetryAnalyzer { private int retryCount = 0; private static final int maxRetryCount = 3; @Override public boolean retry(ITestResult result) { if (retryCount < maxRetryCount) { retryCount++; return true; } return false; } }
import org.testng.Assert; import org.testng.annotations.Test; public class TestclassSample { @Test(retryAnalyzer = MyRetry.class) public void test2() { Assert.fail(); } }