TestNG的监听器概述

发表于:2018-7-23 13:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:易生一世    来源:CSDN

  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中即可。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号