【问题标题】:JUnit4OSGI with EquinoxJUnit4OSGI 与 Equinox
【发布时间】:2014-02-13 23:38:17
【问题描述】:

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

1- 如何构建单元测试?把它放在一个单独的包中还是每个包都应该有自己的单元测试?

2- 如何使用 maven 插件运行单元测试?还是有更好的办法?

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

谢谢。

【问题讨论】:

    标签: junit osgi apache-felix equinox


    【解决方案1】:

    我无法为 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。

    【讨论】:

    • 非常感谢。会继续努力的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2016-07-16
    • 2013-03-06
    • 2010-11-06
    相关资源
    最近更新 更多