osgi 如何引入包_OSGi Testsuite:引入类名过滤器
osgi 如何引入包
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公共许可证下获得,并托管在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 如何引入包
osgi 如何引入包_OSGi Testsuite:引入类名过滤器相关推荐
- OSGi Testsuite:引入类名过滤器
OSGi Testsuite是一个JUnit测试运行程序 ,它动态地收集要执行的测试类. 它已经由我的同伴Rüdiger大约一年前出版,并且已经在某些项目中证明是有用的. 但是对于gonsole,我们 ...
- DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器...
DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E ...
- eclipse自动排版快捷键、自动引入包
ctrl+shift+f快捷键,自动排版 ctrl+shift+o快捷键,自动引入包 注意,有些输入法(如搜狗和百度输入法)中的简繁体字切换功能和eclipse的自动排版功能一致,必须先关掉输入法之后 ...
- python中引入包的时候报错AttributeError: module ‘sys‘ has no attribute ‘setdefaultencoding‘解决方法?
python中引入包的时候报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法? 参考文章: (1)pyth ...
- 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用
cz88 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用 Go 语言编写 进程内缓存结果,重复的 ip 查询响 ...
- Golang引入包报错 package xxx is not in GOROOT
GOROOT为:C:\Go GOPATH为:D:\wamp64\www\gocode 引入同目录下的business包,却报错:hello.go:5:2: package project01/mode ...
- IDEA本地仓库存在jar包但maven引入仍然报红
IDEA本地仓库存在jar包但maven引入仍然报红 一个项目下S分多个模块A\B\C\D,本地仓库是同一个,每个模块有自己的pom文件,其中一个子模块A引入了spring-test <depe ...
- eclipse怎样自动引入包--Organized Imports
eclipse怎样自动引入包–Organized Imports 1.问题重现 (1)编辑下列代码报错: (2)自动引入包–Organized Imports可以解决报错问题 –选择第一个" ...
- python怎么导入文件-Python文件如何引入?详解引入Python文件步骤
python基本语法--引入Python文件 1.新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件 2.在mylib.py文件中创建一个Hello的类 并且给 ...
最新文章
- html 标签 中 的Lang 有什么用
- iOS -OC调用js页面
- MySQL查询的进阶操作--连接查询
- vtigerCrm 目录结构(整理中)
- Linux之cut命令
- 熊猫烧香源码--假的:)
- autocad+服务器未响应,CAD图纸打开未响应解决的方法
- 形式化验证学习——什么是形式化?Formal
- Android11(R) system_ext 分区 system_ext_specific 属性
- 太极图正确画法_太极图唯一正确的画法
- 计算机远程控制安全吗,远程控制电脑安全吗?
- 调用tel://打电话
- 360浏览器的404报错页
- 走出 scipy 的深坑:用 numpy 实现散列数据网格化
- 各种磁盘阵列模式(各种raid)之间的区别
- 免费学习的Linux主机
- 一个网站是如何上线的
- 关于硕士研究生延毕的几问几答
- data-toggle,data-target,data-dismiss
- 前端构建工具-fis3使用入门