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

简介: 原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong/article/details/40404939 TestNg提供了监听器和拦截器的几个接口供我们自己开发扩展,通过实现这些接口,来自定义我们在测试中想要的行为 接口列表: IAnnotationTransformer (doc,javadoc) IAnnota

原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong/article/details/40404939


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

接口列表:

原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong/article/details/40404939

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包中的代码执行的


原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong/article/details/40404939


目录
相关文章
|
10月前
|
程序员 编译器 C语言
C语言中的预处理器指令,涵盖其基本概念、常见指令(如`#define`、`#include`、条件编译指令等)、使用技巧及注意事项
本文深入解析C语言中的预处理器指令,涵盖其基本概念、常见指令(如`#define`、`#include`、条件编译指令等)、使用技巧及注意事项,并通过实际案例分析,展示预处理器指令在代码编写与处理中的重要性和灵活性。
407 2
|
10月前
|
存储 数据采集 监控
云上数据安全保护:敏感日志扫描与脱敏实践详解
随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。
|
11月前
|
监控 安全 算法
线程死循环确实是多线程编程中的一个常见问题,它可能导致应用程序性能下降,甚至使整个系统变得不稳定。
线程死循环是多线程编程中常见的问题,可能导致性能下降或系统不稳定。通过代码审查、静态分析、日志监控、设置超时、使用锁机制、测试、选择线程安全的数据结构、限制线程数、使用现代并发库及培训,可有效预防和解决死循环问题。
265 1
|
运维 监控 测试技术
自动化运维工具的设计与实现
【8月更文挑战第31天】在现代软件开发中,自动化运维是提高效率、减少错误的关键。本文将探讨如何设计并实现一个自动化运维工具,通过具体代码示例展示其构建过程。我们将从需求分析入手,逐步深入到工具的设计思路、核心功能实现以及最终的部署与测试。文章旨在为读者提供清晰的自动化运维工具开发指导和实践参考。
|
算法 安全 网络安全
Diffie-Hellman (DH) 算法的工作原理
【8月更文挑战第23天】
1846 0
|
Shell Python BI
targetcli内核态操作实战
工作中一旦遇到内核态的东西感觉操作非常困难,并且各种的权限的限制导致的操作非常困难,最终往往都是重启了事。比如进程出现了僵尸D状态,活着出现内核态数据残留,例如sysfs数据残留等
425 2
|
数据处理 Apache 流计算
【Flink】Flink的CEP机制
【4月更文挑战第21天】【Flink】Flink的CEP机制
|
安全 关系型数据库 Linux
|
Ubuntu Linux
服务器硬件 做raid操作 ubuntu linux做raid
服务器硬件 做raid操作 ubuntu linux做raid
263 0
|
运维 安全 网络安全
通过Xshell连接有跳板机/堡垒机的服务器
通过Xshell连接有跳板机/堡垒机的服务器
1948 0