在TestNG中完成套件后,如何重新运行失败的测试。使用RetryAnalyzer,我可以在失败的测试用例之后立即重新运行失败的测试用例,但在套件完成之后不能重新运行。
我要求这样做的原因:我的测试用例在20多个线程上并行运行,我的一些测试系统在此负载下表现异常,因此在之后立即重试无济于事。
但是我们通过重新运行testNG-failed.xml重试失败的测试用例,这些用例通过了。当前,我们正在重新运行testNG-failed.xml,但是它为我们创建了2个报告和许多其他问题。我们是否可以通过RetryAnalyzer或testNG中的任何其他方式在不重新运行testNG-failed.xml的情况下实现类似的功能?
您可以创建suiteListener
以在测试套件运行后显示失败的测试案例,如下所示,以获取所有上下文的所有失败的测试案例
public class suiteListener implements ISuiteListener {
@Override
public void onStart(ISuite suite) {
}
@Override
public void onFinish(ISuite suite) {
System.out.println("suite finished");
final Map<java.lang.String,ISuiteResult> res = suite.getResults()
for (ISuiteResult r : res.values()) {
context = r.getTestContext() ;
Iterator<ITestResult> failedTestCases =context.getFailedTests().getAllResults().iterator();
while (failedTestCases.hasNext()) {
System.out.println("failedTestCases...");
ITestResult failedTestCase = failedTestCases.next();
ITestNGMethod method = failedTestCase.getMethod();
java.lang.String testName = failedTestCase.getName();
System.out.println("failed method.."+ method);
System.out.println("failed testName.."+ testName);
}
}
}
并将侦听器附加到testng.xml
文件
<listeners>
<listener class-name ="firsttestngpackage.suiteListener" />
</listeners>
然后您可以通过创建虚拟类来简单地利用this方法以编程方式运行测试