本文共 1264 字,大约阅读时间需要 4 分钟。
TestNG的监听器(listener)是一系列的接口,用于在运行时设置动态参数,以改变TestNG的执行过程。TestNG的所以监听器都是org.testng.ITestNGListener接口的实现。
1. 常见的TestNG提供的监听器接口如下:
我们将在后续文章中详细介绍这些监听器的具体用法,这里只介绍在TestNG中使用监听器的方法。
2. 在TestNG中使用监听器可以有如下方式:
1).命令行中给出-listener参数
java org.testng.TestNG -listenertestng.xml
对于具体的一个监听器实现类,临时用于一次测试,可以通过这种方式设置测试执行的监听器。
2).testng.xml配置文件中设置<listeners>
... ...
这种方式可以设置多个监听器。
3).为测试类设置@Listeners标注
@Listeners({ com.mydomain.MyListener.class, com.mydomain.MyMethodInterceptor.class })public class MyTest { // ...}
这种方式可以设置多个监听器。
事实上,这种方式与在testng.xml配置文件中设置<listeners>是等价的。虽然只是在一个测试类中设置监听器,但是监听器作用于该测试类所在的整个测试执行过程中。4).Java SPI接口的实现的监听器
从Java 6开始,为了支持更加灵活的、对服务的扩展(对服务接口的独立实现),JDK提供了java.util.ServiceLoader<S>类。该类能够在运行时动态加载第三方提供的服务实现,而无需预先进行任何的代码级编译集成。从而实现了服务接口与服务实现的完全松耦合。具体请参考Java Doc。
通过SPI机制,我们只要开发自己的TestNG的监听器实现类;然后在该实现类的同级目录中创建“META-INF/services/org.testng.ITestNGListener”,即声明监听器实现类说实现的服务接口;最后将目录打包为jar文件,在运行TestNG执行时加入该jar到classpath中即可。
转载地址:http://rslai.baihongyu.com/