2017-06-05 94 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的聽衆和聽者的所有上述列舉的方式注射。