OSGi测试
目前,我正在研究新版本控制系统,作为大学最后一年项目的一部分。 我们的想法是使其具有高适应性和可插拔性。
我们正在使用OSGi框架(Equinox实现)来管理我们的插件。 我的问题是我找不到一个简单易用的方法来测试OSGi包。
目前,我必须使用Maven构建捆绑包,然后执行测试工具。 我正在寻找像Eclipse的JUnit测试运行器这样的东西,因为它会节省我一大堆时间。
有没有快速简便的方法来测试OSGi包?
编辑:我不需要测试Eclipse插件或GUI组件,只需要测试OSGi包。
EDIT2:是否有一些支持JUnit4的框架?
最近,你应该看看Pax考试: http : //team.ops4j.org/wiki/display/paxexam/Pax+Exam
这是OPS4J目前与测试相关的工作。
OPS4J(ops4j.org)上有一个名为Pax Drone的专用开源OSGi测试框架。
您可能想看看Pax Drone([ http://wiki.ops4j.org/confluence/x/KABo%5D ),它可以让您在测试中使用所有Felix版本以及Equinox和Knopflerfish。
干杯,托尼
以下是一些尚未提及的工具:
-
我正在使用Tycho ,这是一个使用Maven构建Eclipse插件的工具。 如果您在自己的插件或插件片段中创建测试,Tycho可以在其自己的OSGi实例中运行每组测试,并具有所有必需的依赖项。 介绍和进一步的信息 。 这对我来说非常有效。
-
jUnit4OSGI看起来很简单。 您创建OSGiTestCase的子类,并获得
getServiceReference()
等方法。 -
Pluginbuilder是OSGi bundle / Eclipse插件的无头构建系统,它有一个名为Autotestsuite 的测试运行框架 。 它在构建步骤之后在OSGi环境的上下文中运行测试。 但是,它似乎并没有维持好几年。 我认为许多Eclipse项目正在从Pluginbuilder迁移到Tycho。
-
另一种选择是在unit testing中启动OSGi容器的实例,直接运行,如此处所述。
-
这是一个写了一个小包测试收集器的人 ,它搜索JUnit(3)测试并运行它们。
Eclipse有一个启动配置类型,用于在Eclipse(即OSGi)应用程序的上下文中运行JUnit测试:
如果您需要测试GUI组件,我发现SWTBot可以完成工作。
条约是一个合同(测试)框架,相当学术,但有一些很好的想法。 有发表在其上的论文,以及正在努力改进它的人。
ProSyst测试执行环境是OSGi包的有用测试工具。 它还支持JUnit测试作为可能的测试模型之一。
对于unit testing,请使用EasyMock框架或创建自己的测试所需接口实现。
我认为我们遇到了同样的问题,我们制定了自己的解决方案。 解决方案有不同的部分:
- 一个junit4runner,它捕获所有定义了特殊属性的OSGi服务。 它使用JUnit4引擎运行这些捕获的服务。 JUnit注释应放在服务实现的接口中。
- 启动OSGi框架的maven插件(可以将自定义框架创建为maven依赖项)并在集成测试maven生命周期内运行unit testing。
- 部署OSGi捆绑。 如果将其放入OSGi容器中,将打开一个简单的始终在顶的窗口,您可以在其中放置项目文件夹(来自总指挥官或来自eclipse)。 然后,这将重新部署该捆绑包。
使用这些工具,您可以执行TDD并使写入的测试始终在maven集成阶段内运行。 建议使用带有m2e和maven-bundle-plugin的eclipse,因为在这种情况下,只要在源代码中保存一个类就可以重新生成target / classes / META-INF / MANIFEST.MF,这样就可以拖动项目并删除到部署者窗口。 您开发的OSGi包不必具有任何特殊function(例如作为eclipse插件或其他东西)。
整个解决方案是OpenSource。 您可以在http://cookbook.everit.org找到教程
在过去的几年里, Tycho–一个基于Maven的OSGi构建系统 – 在Eclipse Foundation中变得相当受欢迎。 该框架还包括使用Maven Surefire在单独的测试平台中测试OSGi包的方法…
bnd-testing-maven-plugin怎么样?
它允许在像Felix或Equinox这样的运行容器中运行JUnit。 如果您使用BNDTools进行eclipse,这非常相似,但只需要map withpout eclipse并且没有UI。
https://github.com/bndtools/bnd/tree/master/maven/bnd-testing-maven-plugin
另请参阅maven的effectiveosgi原型。 这将为您提供构建项目或添加测试的良好起点。