2017-06-05 90 views

回答

2

是的,您可以按照下面的整体方法来做到这一点。

  • 构建一个实现了TestNG的接口org.testng.IReporter
  • 在这个界面implementatation其中,你会得到ITestResult对象,表示测试方法的结果,然后通过org.testng.ITestResult#getThrowable检查其异常,然后包括访问的自定义报告实施你的逻辑来分类失败。

这里有一个实施

public class SampleReporter implements IReporter { 
    @Override 
    public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) { 
     for (ISuite suite : suites) { 
      Map<String, ISuiteResult> suiteResults = suite.getResults(); 
      for (ISuiteResult sr : suiteResults.values()) { 
       ITestContext tc = sr.getTestContext(); 
       Set<ITestResult> failedResults = tc.getFailedTests().getAllResults(); 
       for (ITestResult failedResult : failedResults) { 
        Throwable throwable = failedResult.getThrowable(); 
        if (throwable instanceof WebDriverException) { 
         //classify this as a selenium exception 
        } 
       } 
      } 
     } 
    } 
} 

草案现在,您可以决定电线在使用下面的选项

  • 使用您的测试类@Listeners注释一个这个监听器。
  • 在您的套房xml文件
  • 使用<listeners>标签使用的ServiceLoader方法

你可以参考我的this博客文章,详细了解一般TestNG的听众和听者的所有上述列举的方式注射。