目前,我正在开发一个新的版本控制系统,作为大学最后一年项目的一部分。我们的想法是使其具有高度适应性和可插拔性。

我们使用 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)应用:

http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/launchers/junit_launcher.htm

如果你需要测试我发现的 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 原型。这将为您构建项目或添加测试提供一个良好的起点。

https://github.com/ effectiveosgi

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top