TestNG-完成套件后如何重新运行失败的测试

问题描述 投票:0回答:1

在TestNG中完成套件后,如何重新运行失败的测试。使用RetryAnalyzer,我可以在失败的测试用例之后立即重新运行失败的测试用例,但在套件完成之后不能重新运行。

我要求这样做的原因:我的测试用例在20多个线程上并行运行,我的一些测试系统在此负载下表现异常,因此在之后立即重试无济于事。

但是我们通过重新运行testNG-failed.xml重试失败的测试用例,这些用例通过了。当前,我们正在重新运行testNG-failed.xml,但是它为我们创建了2个报告和许多其他问题。我们是否可以通过RetryAnalyzer或testNG中的任何其他方式在不重新运行testNG-failed.xml的情况下实现类似的功能?

testing automated-tests testng
1个回答
0
投票

您可以创建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方法以编程方式运行测试

© www.soinside.com 2019 - 2024. All rights reserved.