欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/3 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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:引入类名过滤器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。