TestNg显示器(一个)-----监听器,类型和配置使用---另外META-INF详细解释

原创文章,版权所有所有。转载,归因: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,事实上我们在project文件里常常看到这个它,可是似乎一部分人不大知道它的作用。

在研究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

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-19 23:30:54

TestNg显示器(一个)-----监听器,类型和配置使用---另外META-INF详细解释的相关文章

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

TestNg提供了监听器和拦截器的几个接口供我们自己开发扩展,通过实现这些接口,来自定义我们在测试中想要的行为 接口列表: IAnnotationTransformer (doc, javadoc) IAnnotationTransformer2 (doc, javadoc) IHookable (doc, javadoc) IInvokedMethodListener (doc, javadoc) IMethodInterceptor (doc, javadoc) IReporter (doc

从源代码剖析Struts2中用户自定义配置转换器的两种方式——基于字段的配置转换器和基于类型的配置转换器(解决了实际系统中,因没有区分这两种工作方式的生命周期而引起的异常错误问题)

自定义类型转换器必须实现ongl.TypeConverter接口或对这个接口的某种具体实现做扩展 <<interface>>com.opensymphony.xwork2.conversion.TypeConverter à com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter à org.apache.struts2.util.StrutsTypeConverter 接口及类进行解析 TypeConverter(

java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)

在JavaWeb中的监听器分类 在Javaweb中存在三个被监听对象: HttpServletRequest HttpSessoin ServletContext 监听者 被监听者 监听到事件对象 HttpSessionActivationListener HttpSession – 监听HttpSession活化和顿化. HttpSessionEvent  HttpSessionAttributeListener[W1] HttpSession – 监听session的属性变化的.S.setA

Java中如何判断一个double类型的数据为0?

Java中如何判断一个double类型的数据为0 其实这个问题很简单,只是很多时候考虑复杂了,直接用==判断即可.下面给出测试例子: /**  * 如何判断一个double类型的数据为0  *  * @author leizhimin 2014/8/27 10:31  */ public class Test4 {     public static void main(String[] args) {         double x = 0.00000000000000000;       

[NHibernate]第一个NHibernate的应用配置

NHibernate是.Net平台下一个成熟的,开源的对象关系映射器(ORM).本文来介绍第一次使用NHibernate的时候的配置. 1.下载NHibernate.Nhibernate官网最新版本为NH3.3.3,下载地址:http://nhforge.org/ 2.NHibernate压缩包解压后,将其中Required_Bins文件夹下的引用拷贝到你的项目根目录下.确保包含如下文件: 3.将NHibernate.dll添加引用到你所对应的项目中. 4.添加Mapping文件.该文件是一个将

有一个NSStirng类型,retain方式声明的name属性的setter方法内部每一行代码的作用?

- (void)setName:(NSString *)name { 判断原有对象和新对象是否是同一个对象,如果是同一个,就没有必要再重新赋值,否则会先release 再retain,就会变成野指针 if (_name != name) { 释放保有之前对象的所有权 [_name release]; 让实例变量 _name保有新的对象的所有权 _name = [name retain]; } } 有一个NSStirng类型,retain方式声明的name属性的setter方法内部每一行代码的作用

一个int类型究竟占多少个字节

一个int占多少个字节? 这个问题我们往往得到的答案是4. 可是int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes match the ILP32LL model, which is what most compilers adhere to on 32-bit platforms. The LP64 model is the de facto standard for compilers that genera

向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE(&#39;{0}&#39;,&#39;YYYY-MM-DD&#39;))

需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字段','YYYY-MM-DD'))转换.如下: string.Format("insert into tablename (TIME) values(TO_DATE('{0}','YYYY-MM-DD'))",now) 错误写法: string.Format("insert in

Entity Framework 6 Recipes 2nd Edition(11-5)译 -&gt; 从”模型定义”函数返回一个匿名类型

11-5. 从”模型定义”函数返回一个匿名类型 问题 想创建一个返回一个匿名类型的”模型定义”函数 解决方案 假设已有游客(Visitor) 预订(reservation)房间(hotel ) 的模型,如Figure 11-5所示. Figure 11-5. A model for hotel reservations 想要返回每位游客房间预订条数和带来的总收入.因为很多地方需要这些信息,所以想要创建一个”模型定义”函数,接受一个查询参数,返回一个包含游客合计信息的匿名类型的集合: 2. 把Li