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