首页 > 代码库 > TestNg监听器(一)-----监听器的类型和配置使用的方法---附加META-INF详解

TestNg监听器(一)-----监听器的类型和配置使用的方法---附加META-INF详解

TestNg提供了监听器和拦截器的几个接口供我们自己开发扩展,通过实现这些接口,来自定义我们在测试中想要的行为

接口列表:

  • IAnnotationTransformer (doc,javadoc)
  • IAnnotationTransformer2 (doc,javadoc)
  • IHookable (doc,javadoc)
  • IInvokedMethodListener (doc, javadoc)
  • IMethodInterceptor (doc,javadoc)
  • IReporter (doc,javadoc)
  • ISuiteListener (doc, javadoc)
  • ITestListener (doc,javadoc)

TestNg提供了三种方式来配置开发者自己的接口:

1.注解

在TestNg中提供了一个类级别的注解,@Listeners({*.class, *.class})

*.class就是我们自己实现的监听

这种方式在我们开发中比较常用

2.配置文件

在配置文件中我们可以通过

<listeners>
        <listener class-name="全类名"></listener>
    </listeners>

来进行插拔式配置,这种方式是更灵活的,比第一种写死在代码中更为方便

3.通过ServiceLoader的方式

这种方式是比较复杂的,它更多的使用于对在编写扩展框架时使用,比如我们对TestNg的增强,然后封装成框架,提供给别人使用

说到打包就不得不说的一个东西META-INF,其实我们在工程文件中经常看到这个它,但是似乎一部分人不大知道它的作用,

在研究TestNg这个功能之前,我也是属于这一部分人中的

下面先说META-INF

它包含了如下文件/文件夹

1.MANIFEST.MF ----- 定义一些扩展和打包相关的数据

2.INDEX.LIST ------ 这文件是在jar 工具打包的时候 使用 ‘ -i ‘ 选项来生成的,它包含了应用程序或扩展包中的位置声明,它是JarIndex实现的一部分,通常被类加载器用来加速类的加载过程

3.x.SF ------ jar文件的签名文件

4.x.DSA ------ 签名块文件,用同样的文件名关联着签名文件,这个文件存储了签名摘要和签名文件是一样的。

5.services/ ------ 这个目录用来存储所有的业务供应源的配置文件

上述的这些文件或文件夹可以被Java 2 平台自动的识别和解读并配置到应用程序、扩展、类加载器和业务中


接下来我们要做的就是把我们写好的接口扩展实现类(.class),和META-INF中放在同一个目录下,记得类如果带有包名,那么和META-INF同级的是包的根目录

然后我们在META-INF中创建services文件夹,在其中创建一个文件,文件名为我们实现的接口的名称,文件内容写的是我们的实现类的完整目录

将META-INF和类文件打包生成jar文件

此时就完成了,我们只需要把生成的jar包添加到项目中就可以了。

注:如果我们在IDE中操作,那么我们需要注意哦,如果你把写好的实现类复制出来打包又引入回去的话,,,其实这个时候,源码的中的代码是会覆盖jar包中的代码执行的




TestNg监听器(一)-----监听器的类型和配置使用的方法---附加META-INF详解