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

我们正在使用OSGi框架(Equinox实现)来管理我们的插件。 我的问题是我找不到一个简单易用的方法来测试OSGi包。

目前,我必须使用Maven构建捆绑包,然后执行测试工具。 我正在寻找像Eclipse的JUnit测试运行器这样的东西,因为它会节省我一大堆时间。

有没有一种快速简便的方法来测试OSGi包?

编辑:我不需要测试Eclipse插件或GUI组件,只需要测试OSGi包。

EDIT2:是否有一些支持JUnit4的框架?

===============>>#1 票数:12

最近,你应该看看Pax考试: http//team.ops4j.org/wiki/display/paxexam/Pax+Exam

这是OPS4J目前与测试相关的工作。

===============>>#2 票数:6

在OPS4J(ops4j.org)上有一个名为Pax Drone的专用开源OSGi测试框架。

您可能想看看Pax Drone([ http://wiki.ops4j.org/confluence/x/KABo] ),它可以让您在测试中使用所有Felix版本以及Equinox和Knopflerfish。

干杯,托尼

===============>>#3 票数:6 已采纳

Spring Dynamic Modules对测试OSGi包提供了出色的支持。

===============>>#4 票数:6

以下是一些尚未提及的工具:

  • 我正在使用Tycho ,这是一个使用Maven构建Eclipse插件的工具。 如果您在自己的插件或插件片段中创建测试,Tycho可以在其自己的OSGi实例中运行每组测试,并具有所有必需的依赖项。 介绍进一步的信息 这对我很有用。

  • jUnit4OSGI看起来很简单。 您创建OSGiTestCase的子类,并获得getServiceReference()等方法。

  • Pluginbuilder是OSGi bundle / Eclipse插件的无头构建系统,它有一个名为Autotestsuite 的测试运行框架 它在构建步骤之后在OSGi环境的上下文中运行测试。 但是,它似乎没有维持好几年。 我认为许多Eclipse项目正在从Pluginbuilder迁移到Tycho。

  • 另一种选择是你的单元测试 ,你直接运行启动一个OSGi容器的实例,如解释在这里

  • 这是一个写了一个小包测试收集器的人 ,它搜索JUnit(3)测试并运行它们。

===============>>#5 票数:3

Eclipse有一个启动配置类型,用于在Eclipse(即OSGi)应用程序的上下文中运行JUnit测试:

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

===============>>#6 票数:1

对于单元测试,请使用EasyMock框架或创建自己的测试所需接口实现。

===============>>#7 票数:1

ProSyst测试执行环境是OSGi包的有用测试工具。 它还支持JUnit测试作为可能的测试模型之一。

===============>>#8 票数:1

如果您需要测试GUI组件,我发现SWTBot可以完成工作。

===============>>#9 票数:1

我认为我们遇到了同样的问题,我们制定了自己的解决方案。 解决方案有不同的部分:

  • 一个junit4runner,它捕获所有定义了特殊属性的OSGi服务。 它使用JUnit4引擎运行这些捕获的服务。 JUnit注释应放在服务实现的接口中。
  • 启动OSGi框架的maven插件(可以将自定义框架创建为maven依赖项)并在集成测试maven生命周期内运行单元测试。
  • 部署OSGi捆绑。 如果将其放入OSGi容器中,将打开一个简单的永远在顶部的窗口,您可以在其中删除项目文件夹(来自总指挥官或来自eclipse)。 然后,这将重新部署该捆绑包。

使用这些工具,您可以执行TDD并且编写的测试也始终在maven集成阶段内运行。 建议使用带有m2e和maven-bundle-plugin的eclipse,因为在这种情况下,只要在源中保存一个类就可以重新生成target / classes / META-INF / MANIFEST.MF,这样就可以拖动项目并删除到部署者窗口。 您开发的OSGi包不必具有任何特殊功能(例如作为eclipse插件或其他东西)。

整个解决方案是OpenSource。 您可以在http://cookbook.everit.org找到教程

===============>>#10 票数:1

条约是一个合同(测试)框架,相当学术,但有一些不错的想法。 有发表在其上的论文,以及正在努力改进它的人。

===============>>#11 票数:0

在过去的几年里, Tycho--一个基于Maven的OSGi构建系统 - 在Eclipse Foundation中变得相当受欢迎。 该框架还包括使用Maven Surefire在单独的测试平台中测试OSGi包的方法...

===============>>#12 票数:0

我想有很多方法可以测试OSGi组件。 进行测试的一种方法是使用Robot Framework。 我所做的是使用Robot Framework进行测试,并将远程库安装在OSGi中,或让他们通过套接字与OSGi测试组件通信,机器人将与这些模块通信并通过它们运行测试。

所以,基本上你的OSGi模块应该有接口做某事并产生一些输出。 因此,在我的设置中,我有一个测试组件,可以对实际的OSGi组件进行服务调用,然后会有一个侦听服务来捕获事件/服务调用(由被测模块产生),这些结果可能被机器人问到。 所以基本上这样你就可以在一个小型组件中拆分一个庞大的系统,让系统像环境一样在生产/生产中运行,并在组件级别自动测试,或者让一些真实的组件一起进行测试。

===============>>#13 票数:-1

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原型。 这将为您提供构建项目或添加测试的良好起点。

https://github.com/effectiveosgi

  ask by fluffels translate from so

未解决问题?本站智能推荐:

2回复

OSGi中的依赖注入与测试

对于一个新项目,我正在研究OSGi必须提供的依赖注入,并且我有点喜欢iPOJO(基于纯注释,而不是基于xml的支持)。 但是,从测试的角度来看,蓝图可能会更好,因为对于不同的测试用例(功能测试),它可能足以重写蓝图配置,并且会立即注入其他服务。 您对此主题有何看法? 是否可以在不牺
3回复

对于OSGi(集成)测试,Arquillian与Pax Exam相比如何?

我目前正在研究如何最好地测试我们打算在Apache Karaf上运行的OSGi应用程序。 显而易见的选择是使用labs-paxexam-karaf进行 Pax考试(有关教程,请参阅http://iocanel.blogspot.com/2012/01/advanced-integration-
1回复

Maven OSGi集成/系统测试

我希望Maven测试是否可以安装构建的OSGi捆绑包并将其成功启动到一直运行的OSGi框架(Equinox)中。 使用maven构建有效的OSGIi捆绑包已解决。 现在,我要进行描述的集成/系统测试。 调查为我提供了以下方法: 通过Maven自动部署 通过Felix
2回复

OSGi单元测试没有包捆绑的步骤

我已经检查了一些OSGI的测试解决方案,包括PAX,并快速浏览了Spring DM中的抽象TestCase,但它们似乎都需要一个jar来捆绑并捆绑相关的bundle。 我希望找到一些没有这个中间步骤的东西。 想象一下,能够在类路径中打包包,以便包x和y组成捆绑XY,包x和z组成捆绑XZ。
3回复

在OSGI容器中对func进行集成测试

我正在使用FuseESB来运行我的应用程序,该应用程序本质上是OSGI容器(Felix),我想找到一种在集成模式下测试OSGI服务的方法(包括DB,外部服务等外部依赖项)。 首先想到的是将特定捆绑软件运行到容器中的能力,该捆绑软件将所有应用程序服务纳入该捆绑软件中定义的运行测试中。 有人可以
2回复

单元测试OSGI包

如何测试我的OSGI捆绑包? 我正在使用基于Eclipse Equinox的Kura 。 我说的是单元测试而不是集成测试,因为我想先检查自己的应用程序类和逻辑,然后再检查导出的服务。 最好的方法是什么? 像常规Java App一样在捆绑包中包含测试目录 实施新的捆绑包
1回复

包括用于JUnit测试的OSGI jar

我有一个OSGI捆绑包,它使用外部jar进行记录。 在构建期间,我有一个JUnit测试,它会调用日志记录jar。 但是罐子没有部署到OSGI框架中,我得到了NPE。 最后,我需要有一个日志jar 有没有办法将日志记录罐也包含为模拟测试?
1回复

单元测试OSGi组件

我目前正在考虑“如何设计一个OSGi组件,以便使用jUnit和Mockito等框架轻松编写测试” 。 由于OSGi强化了DIP (依赖性倒置原则)并且通常存在注入器方法(例如设置器),因此模拟捆绑间依赖性非常容易。 但是捆绑内部依赖呢? 例如,看看这种情况 。 现在我想将它带入
2回复

使用Osgi进行Junit测试不会启动Jpa组件

我们正在使用OSGI,并希望编写一个JUnit Systemtest。 我们有一个组件,可以使用Java Persistence API(JPA)与数据库进行交互。 启动测试时,我们收到一条错误消息,提示无法激活数据库组件。 我们认为发生此错误是因为jpa找不到persistence.
2回复

OSGi单元测试和捆绑导出

平衡捆绑包的声明导出和单元测试要求的最佳方法是什么? 考虑要为其编写单元测试的捆绑“mybundle”。 捆绑包的源存储在IDE的“项目”概念中。 例如: 单元测试我指的是单个POJO的测试,与更广泛的OSGi上下文无关,在这些上下文中可以在一个包中使用这些类。 在可能的情况