TestNG是通过 Listeners 或者 Reporters 生成测试报告。
- Listeners,即 org.testng.ITestListener 的实现,能够在测试执行过程中发出各种测试结果的事件;
- Reporters,即 org.testng.IReporter 的实现,能够在所有的测试套件执行完毕后发出测试结果的事件,其中包括多个描述测试结果的对象。
1. ITestListener---------------
ITestListener 是所有监听器中最常用的一个,也是最重要的一个。该接口的继承关系如下图所示:
这里有个TestListenerAdapter 实现类,该类以空方法(即未实际实现)实现了 ITestListener 接口的全部方法。
编写ITestListener接口的实现时,为了避免实现不必要的接口方法,我们往往只要扩展TestListenerAdapter类即可。
事实上,除了JUnitXMLReporter之外,其他几个***Reporter都是扩展自TestListenerAdapter类。
而 JUnitXMLReporter 就是一个JUnit的XML格式的报告生成器。
ITestListener 接口中定义的方法如下:
2.IReporter-------------------
IReporter 接口也是继承自 ITestNGListener 接口,用于生成报表。该接口中只定义了一个方法:
void generateReport(Java.util.List<XmlSuite> xmlSuites, java.util.List<ISuite> suites, java.lang.String outputDirectory);
该方法可以在指定目录下为指定的测试套件生成报表。
该方法在TestNG执行完所有的测试套件后被调用,方法中的参数包含所有的测试结果。