TestNg显示器(一个)-----监听器,类型和配置使用---另外META-INF详细解释
原创文章,版权所有所有。转载,归因:http://blog.csdn.net/wanghantong/article/details/40404939
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)
原创文章,版权全部,同意转载。标明出处: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
版权声明:本文博客原创文章,博客,未经同意,不得转载。
TestNg显示器(一个)-----监听器,类型和配置使用---另外META-INF详细解释的更多相关文章
- webpack+vue-cli中proxyTable配置接口地址代理详细解释
在vue-cli项目中config目录里面的index.js配置接口地址代理,详细解释如下图所示:
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- Selenium 使用Eclipse+TestNG创建一个Project中遇到的问题
继续之前的学习,对于一个没有太多计算机基础的人,刚学习selenium,最大的问题就是不知道该如何入手,最简单的办法就是录制脚本之后导入. 但是导入的时候也会出现一些问题,就是该导入到哪里?如何导入? ...
- java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)
在JavaWeb中的监听器分类 在Javaweb中存在三个被监听对象: HttpServletRequest HttpSessoin ServletContext 监听者 被监听者 监听到事件对象 H ...
- Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。
2.3 hashes 类型及操作 Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加.删除操作都是 O(1)(平均).hash 特别适合用于存储对象.相 ...
- Entity Framework 6 Recipes 2nd Edition(10-4)译 -> 从存储过程返回一个复杂类型
10-4. 从存储过程返回一个复杂类型 问题 想在方法中使用一个返回复杂类型的存储过程 解决方案 假设我们已经有如Figure 10-3.所示的模型,该Employee (雇员)模型包含Employe ...
- Entity Framework 6 Recipes 2nd Edition(11-5)译 -> 从”模型定义”函数返回一个匿名类型
11-5. 从”模型定义”函数返回一个匿名类型 问题 想创建一个返回一个匿名类型的”模型定义”函数 解决方案 假设已有游客(Visitor) 预订(reservation)房间(hotel ) 的模型 ...
- Entity Framework 6 Recipes 2nd Edition(11-6)译 -> 从一个”模型定义”函数里返回一个复杂类型
11-6.从一个”模型定义”函数里返回一个复杂类型 问题 想要从一个”模型定义”函数返回一个复杂类型 解决方案 假设我们有一个病人(patient)和他们访客(visit)的模型,如 Figure 1 ...
- [NHibernate]第一个NHibernate的应用配置
NHibernate是.Net平台下一个成熟的,开源的对象关系映射器(ORM).本文来介绍第一次使用NHibernate的时候的配置. 1.下载NHibernate.Nhibernate官网最新版本为 ...
随机推荐
- hdu2606(递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2606 题意: 用1*1,2*2,3*3,4*4的正方形填充4*n的矩形, 问有多少种不同填法. 分析 ...
- Replace - with an en dash character (–, –) ?
这个安卓开发过程中eclipse的提示,新浪网友给出这个解决方法:http://blog.sina.com.cn/s/blog_5ea8670101015dgk.html 太笨了. 看看stacko ...
- 网络安全审查制度即将推出 手机App安全加密成必定趋势
年05月22日宣布,为维护国家网络安全.保障中国用户合法利益,中国即将推出网络安全审查制度,关系国家安全和公共利益的系统使用的.重要信息技术产品和服务,应通过网络安全审查.文章出处:*** 网络安全审 ...
- java Quartz定时器任务与Spring task定时的几种实现,
java Quartz定时器任务与Spring task定时的几种实现 基于java 的定时任务实现, Quartz 时间详细配置 请查阅 http://www.cnblogs.com/si ...
- 如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
原文:如何在WindowsPhone Bing Map控件中显示必应中国中文地图.谷歌中国中文地图. 最近正好有点业余时间,所以在做做各种地图.Bing Map控件本身就能显示必应地图,但是很遗憾微软 ...
- Cocos2d-x中父节点scale对子节点的影响
背景:在前几天,刚接触cocos2d-x,随便找了一张图,作为一个CCSprite,而且设置了scale属性,然后在这个sprite上创建了一个CCLabelTTF,并用sprite->addC ...
- 使用 DBMS_REPAIR 修复坏块
对于Oracle数据块物理损坏的情形,在我们有备份的情况下可以直接使用备份来恢复.对于通过备份恢复,Oracel为我们提供了很多种方式,冷备,基于用户管理方式,RMAN方式等等.对于这几种方式我们需要 ...
- python学习笔记之八:迭代器和生成器
一. 迭代器 在前面的笔记中,已经提到过迭代器(和可迭代),这里会对此进行深入讨论.只讨论一个特殊方法---__iter__,这个方法是迭代器规则的基础. 1.1 迭代器规则 迭代的意思是重复做一些事 ...
- Sql还原数据库出现3154错误
要先知道还原的数据库的名字 然后在数据库中新建一个那个名字的数据库, his 是数据库的名字!! RESTORE DATABASE his FROM DISK = 'E:\RDHL文件\HIS相关文档 ...
- Android Material Design-Creating Lists and Cards(创建列表和卡)-(三)
转载请注明出处:http://blog.csdn.net/bbld_/article/details/40430319 翻译自:http://developer.android.com/trainin ...