运维开发网

TestNG的监听器概述

运维开发网 https://www.qedev.com 2020-03-20 15:38 出处:网络 作者:运维开发网整理
TestNG的监听器(listener)是一系列的接口,用于在运行时设置动态参数,以改变TestNG的执行过程。TestNG的所以监听器都是org.testng.ITestNGListener接口的实现。 1. 常见的TestNG提供的监听器接口如下: IAnnotationTransformer  IAnnotationTransformer2  IAnnotationTransformer3

TestNG的监听器(listener)是一系列的接口,用于在运行时设置动态参数,以改变TestNG的执行过程。TestNG的所以监听器都是org.testng.ITestNGListener接口的实现。

1. 常见的TestNG提供的监听器接口如下:

  • IAnnotationTransformer 
  • IAnnotationTransformer2 

  • IAnnotationTransformer3 

  • IHookable 

  • IInvokedMethodListener 

  • IInvokedMethodListener2 

  • IMethodInterceptor 

  • IReporter 

  • ISuiteListener 

  • ITestListener 

我们将在后续文章中详细介绍这些监听器的具体用法,这里只介绍在TestNG中使用监听器的方法。

2. 在TestNG中使用监听器可以有如下方式:

  • 启动TestNG的命令行中给出-listener参数
  • 在testng.xml配置文件中设置<listeners>
  • 在测试类中设置@Listeners标注
  • 利用Java SPI接口的实现机制

1).命令行中给出-listener参数

java org.testng.TestNG -listener <com.ericsson.MyListenerImpl> testng.xml
对于具体的一个监听器实现类,临时用于一次测试,可以通过这种方式设置测试执行的监听器。

2).testng.xml配置文件中设置<listeners>

<suite>
  ...
  <listeners>
    <listener class-name="com.ericsson.MyListener" />
    <listener class-name="com.ericsson.MyMethodInterceptor" />
  </listeners>
  ...
这种方式可以设置多个监听器。

3).为测试类设置@Listeners标注

@Listeners({ com.ericsson.MyListener.class, com.ericsson.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中即可。

0

精彩评论

暂无评论...
验证码 换一张
取 消