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

  1. OSGi Testsuite:引入类名过滤器

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

  2. 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 ...

  3. eclipse自动排版快捷键、自动引入包

    ctrl+shift+f快捷键,自动排版 ctrl+shift+o快捷键,自动引入包 注意,有些输入法(如搜狗和百度输入法)中的简繁体字切换功能和eclipse的自动排版功能一致,必须先关掉输入法之后 ...

  4. python中引入包的时候报错AttributeError: module ‘sys‘ has no attribute ‘setdefaultencoding‘解决方法?

    python中引入包的时候报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法? 参考文章: (1)pyth ...

  5. 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用

    cz88 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用 Go 语言编写 进程内缓存结果,重复的 ip 查询响 ...

  6. Golang引入包报错 package xxx is not in GOROOT

    GOROOT为:C:\Go GOPATH为:D:\wamp64\www\gocode 引入同目录下的business包,却报错:hello.go:5:2: package project01/mode ...

  7. IDEA本地仓库存在jar包但maven引入仍然报红

    IDEA本地仓库存在jar包但maven引入仍然报红 一个项目下S分多个模块A\B\C\D,本地仓库是同一个,每个模块有自己的pom文件,其中一个子模块A引入了spring-test <depe ...

  8. eclipse怎样自动引入包--Organized Imports

    eclipse怎样自动引入包–Organized Imports 1.问题重现 (1)编辑下列代码报错: (2)自动引入包–Organized Imports可以解决报错问题 –选择第一个" ...

  9. python怎么导入文件-Python文件如何引入?详解引入Python文件步骤

    python基本语法--引入Python文件 1.新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件 2.在mylib.py文件中创建一个Hello的类 并且给 ...

最新文章

  1. html 标签 中 的Lang 有什么用
  2. iOS -OC调用js页面
  3. MySQL查询的进阶操作--连接查询
  4. vtigerCrm 目录结构(整理中)
  5. Linux之cut命令
  6. 熊猫烧香源码--假的:)
  7. autocad+服务器未响应,CAD图纸打开未响应解决的方法
  8. 形式化验证学习——什么是形式化?Formal
  9. Android11(R) system_ext 分区 system_ext_specific 属性
  10. 太极图正确画法_太极图唯一正确的画法
  11. 计算机远程控制安全吗,远程控制电脑安全吗?
  12. 调用tel://打电话
  13. 360浏览器的404报错页
  14. 走出 scipy 的深坑:用 numpy 实现散列数据网格化
  15. 各种磁盘阵列模式(各种raid)之间的区别
  16. 免费学习的Linux主机
  17. 一个网站是如何上线的
  18. 关于硕士研究生延毕的几问几答
  19. data-toggle,data-target,data-dismiss
  20. 前端构建工具-fis3使用入门

热门文章

  1. 牛客练习赛71C-数学考试【容斥,dp】
  2. P1429-平面最近点对(加强版)【分治】
  3. UOJ#244-[UER#7]短路【贪心】
  4. 【DP】Mod Mod Mod(CF889E)
  5. 【bfs】廉价最短路径(2013特长生 T4)
  6. 【dfs】树(jzoj 2753)
  7. Full_of_Boys训练5总结
  8. Shell变量的初始值赋值
  9. MySQL isnull()函数基本指南
  10. Util包中Arrays