2017-06-05 1 views

Antwort

2

Ja können Sie dies tun, indem Sie den folgenden allgemeinen Ansatz folgen.

  • Erstellen Sie eine benutzerdefinierte Reporter-Implementierung, die die TestNG Schnittstelle org.testng.IReporter
  • Innerhalb dieser Schnittstelle implementatation implementiert, wobei Sie den Zugriff auf ITestResult Objekt, das die Ergebnisse einer Testmethode darstellt und dann prüfen, seine Ausnahme über org.testng.ITestResult#getThrowable und dann bekommen sind Ihre Logik, um Fehler zu klassifizieren.

Hier ist ein Entwurf Implementierung

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 
        } 
       } 
      } 
     } 
    } 
} 

Sie jetzt Draht in diesem Hörer auf eine der folgenden Optionen entscheiden können

  • Mit der @Listeners Anmerkung auf Ihrer Testklasse.
  • Mit dem <listeners>-Tag in Ihrer Suite XML-Datei
  • Mit dem ServiceLoader Ansatz

Sie auf this Blog-Post von mir beziehen können mehr über TestNG Zuhörer im Allgemeinen und alle oben genannten Möglichkeiten der Zuhörer lernen Injektion.

Verwandte Themen