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:引入类名过滤器相关推荐

  1. osgi 如何引入包_OSGi Testsuite:引入类名过滤器

    osgi 如何引入包 OSGi Testsuite是一个JUnit测试运行程序 ,它动态地收集要执行的测试类. 它已经由我的同伴Rüdiger大约一年前出版,并且已经在某些项目中证明有用. 但是对于g ...

  2. Struts项目中引入了过滤器filter后出现中文乱码情况

    问题描述:在Struts项目中需要引入自定义的过滤器,但是引入以后项目中出现了中文乱码现象 解决办法: 第一步:在web.xml中引入过滤器的配置,如下所示,注意自定义的过滤器filter标签一定要在 ...

  3. OSGi入门篇:模块层

    1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文介绍模块层的一些基础知识, ...

  4. java bundle管理_架构设计——OSGI规范

    架构设计--OSGI简介 一.OSGI简介 1.OSGI简介 OSGI(Open Service Gateway Initiative),即开放服务网关协议,是面向Java的动态模型系统. OSGI是 ...

  5. OSGI规范深入浅出

    一.OSGI简介 1.OSGI简介 OSGI(Open Service Gateway Initiative),即开放服务网关协议,是面向Java的动态模型系统. OSGI是指由OSGI Allian ...

  6. 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想

    转自:http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html   布隆过滤器[1](Bloom Filter)是由布隆(Burton ...

  7. Java引入import其它目录的自定义包或java源文件

    在学习import或者package时,我们总是好奇,当Java包不在系统默认路径下,那么我们怎么导入并使用自定义的包,下面就简单的介绍一下导入自定义包的设置 1. 在不同目录(test_projec ...

  8. 布隆过滤器(Bloom Filter)原理及优缺点剖析

    直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中. 和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储 ...

  9. 禁用Zuul的过滤器

    Disable Zuul Filtershttps://cloud.spring.io/spring-cloud-netflix/reference/html/#_disable_zuul_filte ...

最新文章

  1. css 透明_css属性transparent有时候并不是透明的
  2. 反思前进路上碰到困难时 应有的应对方法
  3. 蓝桥杯-长草-代码(BFS)
  4. 计算机硬件技术基础 统计字符串strl中字符'a'的个数,汕头大学工学院830计算机基础综合历年考研真题202p.doc...
  5. BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法
  6. Spring 初始化2次的问题
  7. mysql infobright 缺点_Infobright存储引擎的特点
  8. java实现简单的文字pk的小游戏
  9. rhel7-firewalld端口转发
  10. logo去白底_如何在word编辑把网上截图过来的logo的白色底板去掉,只留下logo字样?...
  11. 科室管理系统中,运用百度编辑器(ueditor1_4_3-utf8-jsp)出现的一系列问题!
  12. vue中 给v-for渲染的元素动态添加移除类名
  13. 电商api、地图api、视频api、音乐api等各类接口合集,或许对你有用
  14. LAMP+haproxy+varnish实现网站访问的动静分离及静态资源缓存
  15. 树莓派4b摄像头使能
  16. Gartner发布首份中国RPA魔力象限报告,弘玑Cyclone被重点推荐
  17. Linux 源码分析 之 udp 分析 二 sendto
  18. Exp7 网络欺诈防范 Week10 - 20165201
  19. php 爬虫 超市,scrapy爬虫 爬取天猫进口零食网页
  20. linux安装pycharm报错:Unable to detect graphics environment

热门文章

  1. hibernate+oracle+servlet实现插入数据的时候,不立马显示!!
  2. MyBatisPlus(基于starter和Bean方式)
  3. volatile可以保证原子性吗
  4. tomcat 实现 文件共享,查看文件目录
  5. shell文本处理工具grep
  6. python线性加权模型_局部加权之线性回归(1) - Python实现
  7. java异常——分析堆栈跟踪元素+使用异常机制的技巧
  8. gc 堆外_GC解释:堆
  9. java中使用kotlin_在Kotlin中使用libGDX
  10. jax-rs jax-ws_在JAX-RS中处理异步请求中的超时