JUnit4OSGI与Equinox

时间:2014-02-13 23:38:18

标签: junit osgi apache-felix equinox

我想知道是否有人能指出我使用 JUnit4OSGI 与Equinox作为OSGI容器的良好教程/样本/最佳实践? 我已经下载了JUnit4OSGI并开始编写示例测试用例,但我正在寻找的是以下问题的答案:

1-如何构建单元测试?把它放在一个单独的包中,或者每个包应该有自己的单元测试吗?

2-如何使用maven插件运行单元测试?或者有更好的方法吗?

3-如何在开发过程中运行单元测试,因为我知道有一个特定于Felix的命令行。

感谢。

1 个答案:

答案 0 :(得分:2)

我对Junit4OSGi无能为力,但我可以提供一种适用于Maven的替代方案。它包含以下部分:

  • testRunner:可以运行测试的模块,如果它们已注册为OSGi服务
  • testRunner-junit4:testrunner模块的Junit4引擎
  • eosgi-maven-plugin:一个maven插件,可以使用上面的模块并在equinox,felix或自定义容器的集成测试阶段运行单元测试
  • richconsole:一个简单的模块,可以将模块放到OSGi容器中。与maven插件一起,它们可用于更新容器中的maven依赖项而无需重新启动它

Testrunner本身并不关心OSGi服务提供的技术。它可能是蓝图,DS,iPojo等等。它需要以下内容:

  • 必须提供eosgi.testId服务属性。这是一个独特的价值
  • 必须提供eosgi.testEngine服务属性。在JUnit的情况下,这是junit4
  • 对于JUnit,类/接口必须使用JUnit注释进行注释。请注意蓝图包装服务对象(我不知道iPojo是否也这样做)所以你必须在类中实现一个接口并注释接口中的函数而不是类

我认为最好的起点是maven usage site。目前osgi-liquibase-bundle项目使用最新版本。在不知道它做什么的情况下,它是配置的一个很好的例子(项目层次结构和pom.xml配置)。

所有模块和插件均可在maven-central处获得。

<强>更新

http://cookbook.everit.org

提供了有关工具使用情况的指南

更新2016.12

现在有Eclipse plugin允许用户启动/停止/调试/升级eosgi-maven-plugin指定的OSGi环境。插件的使用优于richconsole的使用。

Cookbook将很快更新,以使用Eclipse插件而不是richconsole。