OSGi Testsuite:引入类名过滤器
OSGi Testsuite是一个JUnit测试运行程序 ,它动态地收集要执行的测试类。 它已经由我的同伴Rüdiger大约一年前出版,并且已经在某些项目中证明是有用的。 但是对于gonsole,我们必须使用一个难看的补丁,因为1.0版仅支持.*Test
后缀匹配测试类名称。
我通过引入注解@ClassnameFilters
(使用正则表达式匹配任意名称模式)解决了1.1版的问题。 这篇文章简短地解释了它是如何工作的。
OSGi测试套件
OSGi Testsuite提供了一个JUnit测试运行程序BundleTestSuite
,可用于运行给定数量的OSGi捆绑包内的所有测试。 要使用它,请使用@RunWith(BundleTestSuite.class)
注释一个类,并使用@TestBundles({"bundle.1", ...})
指定捆绑。 运行时,JUnit将处理列出的捆绑软件中的所有类,其名称以'Test'
结尾。
@RunWith( BundleTestSuite.class )
@TestBundles( { "org.example.bundle1", "org.example.bundle2" } )
public class MasterTestSuite {}
不幸的是,Test postfix的固定结果显得过于僵化。 在gonsole中,我们对单元测试和集成测试使用不同的后缀。 而且,我们不希望在OSGi Testsuite运行中执行单元测试。 但是这种区别在1.0版中是不可能的。
类名过滤器
受ClasspathSuite (在纯JUnit测试上与OSGi Testsuite的工作原理类似)的启发,我引入了一个注解@ClassnameFilters
。 这允许基于正则表达式定义过滤器以匹配任意测试名称模式:
@RunWith( BundleTestSuite.class )
@TestBundles( { "org.example.bundle1", "org.example.bundle2" } )
@ClassnameFilters( { ".*ITest" } )
public class IntegrationTestSuite {}
处理该示例将包括列出的捆绑软件中所有类的测试,这些测试的名称以'ITest'
后缀结尾。 请注意,带有简单'Test'
后缀的类将不被处理。
此外,可以使用前导'!'
指定排除模式 :
@RunWith( BundleTestSuite.class )
@TestBundles( { "org.example.bundle1", "org.example.bundle2" } )
@ClassnameFilters( { ".*ITest", "!.*FooITest" } )
public class IntegrationTestSuite {}
给定的示例现在将执行列出的捆绑软件中所有类的测试,这些类的名称以'ITest'
后缀结尾,但名称以'FooITest'结尾的类除外。 很简单,不是吗?
结论
OSGi Testsuite的过滤器机制得到了增强,可以动态执行与任意名称模式匹配的测试类。 使用ClassnameFilters
批注和正则表达式可以轻松完成过滤器规范。
该代码可在Eclipse Public License下获得,并托管在GitHub上:
https://github.com/rherrmann/osgi-testsuite
可以从此p2存储库获得最新的稳定版本:
http://rherrmann.github.io/osgi-testsuite/repository
翻译自: https://www.javacodegeeks.com/2014/11/osgi-testsuite-introducing-classname-filters.html
OSGi Testsuite:引入类名过滤器相关推荐
- osgi 如何引入包_OSGi Testsuite:引入类名过滤器
osgi 如何引入包 OSGi Testsuite是一个JUnit测试运行程序 ,它动态地收集要执行的测试类. 它已经由我的同伴Rüdiger大约一年前出版,并且已经在某些项目中证明有用. 但是对于g ...
- Struts项目中引入了过滤器filter后出现中文乱码情况
问题描述:在Struts项目中需要引入自定义的过滤器,但是引入以后项目中出现了中文乱码现象 解决办法: 第一步:在web.xml中引入过滤器的配置,如下所示,注意自定义的过滤器filter标签一定要在 ...
- OSGi入门篇:模块层
1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文介绍模块层的一些基础知识, ...
- java bundle管理_架构设计——OSGI规范
架构设计--OSGI简介 一.OSGI简介 1.OSGI简介 OSGI(Open Service Gateway Initiative),即开放服务网关协议,是面向Java的动态模型系统. OSGI是 ...
- OSGI规范深入浅出
一.OSGI简介 1.OSGI简介 OSGI(Open Service Gateway Initiative),即开放服务网关协议,是面向Java的动态模型系统. OSGI是指由OSGI Allian ...
- 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想
转自:http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html 布隆过滤器[1](Bloom Filter)是由布隆(Burton ...
- Java引入import其它目录的自定义包或java源文件
在学习import或者package时,我们总是好奇,当Java包不在系统默认路径下,那么我们怎么导入并使用自定义的包,下面就简单的介绍一下导入自定义包的设置 1. 在不同目录(test_projec ...
- 布隆过滤器(Bloom Filter)原理及优缺点剖析
直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中. 和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储 ...
- 禁用Zuul的过滤器
Disable Zuul Filtershttps://cloud.spring.io/spring-cloud-netflix/reference/html/#_disable_zuul_filte ...
最新文章
- css 透明_css属性transparent有时候并不是透明的
- 反思前进路上碰到困难时 应有的应对方法
- 蓝桥杯-长草-代码(BFS)
- 计算机硬件技术基础 统计字符串strl中字符'a'的个数,汕头大学工学院830计算机基础综合历年考研真题202p.doc...
- BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法
- Spring 初始化2次的问题
- mysql infobright 缺点_Infobright存储引擎的特点
- java实现简单的文字pk的小游戏
- rhel7-firewalld端口转发
- logo去白底_如何在word编辑把网上截图过来的logo的白色底板去掉,只留下logo字样?...
- 科室管理系统中,运用百度编辑器(ueditor1_4_3-utf8-jsp)出现的一系列问题!
- vue中 给v-for渲染的元素动态添加移除类名
- 电商api、地图api、视频api、音乐api等各类接口合集,或许对你有用
- LAMP+haproxy+varnish实现网站访问的动静分离及静态资源缓存
- 树莓派4b摄像头使能
- Gartner发布首份中国RPA魔力象限报告,弘玑Cyclone被重点推荐
- Linux 源码分析 之 udp 分析 二 sendto
- Exp7 网络欺诈防范 Week10 - 20165201
- php 爬虫 超市,scrapy爬虫 爬取天猫进口零食网页
- linux安装pycharm报错:Unable to detect graphics environment
热门文章
- hibernate+oracle+servlet实现插入数据的时候,不立马显示!!
- MyBatisPlus(基于starter和Bean方式)
- volatile可以保证原子性吗
- tomcat 实现 文件共享,查看文件目录
- shell文本处理工具grep
- python线性加权模型_局部加权之线性回归(1) - Python实现
- java异常——分析堆栈跟踪元素+使用异常机制的技巧
- gc 堆外_GC解释:堆
- java中使用kotlin_在Kotlin中使用libGDX
- jax-rs jax-ws_在JAX-RS中处理异步请求中的超时