【问题标题】:Dependency injection in OSGi vs testingOSGi 中的依赖注入与测试
【发布时间】:2012-03-14 04:11:34
【问题描述】:

对于一个新项目,我正在研究 OSGi 在依赖注入方面必须提供的功能,我有点喜欢 iPOJO(纯基于注释,而不是支持 xml)。

但是,从测试的角度来看,蓝图可能会更好,因为对于不同的测试用例(功能测试),重写蓝图配置可能就足够了,并且会立即注入其他服务。

你对这个话题有什么看法? 我可以放弃基于 XML 的蓝图(我讨厌 XML),转而使用 iPOJO,而不牺牲测试的灵活性吗?

【问题讨论】:

    标签: java testing dependency-injection osgi


    【解决方案1】:

    是的。你可以。我不认为你会牺牲任何东西。 事实上,iPOJO 比 blueprint 更强大,它支持诸如“字段注入”、“服务生命周期控制”和“配置管理”之类的东西 - Blueprint 不支持 (reference)。

    然而,蓝图是 OSGi Enterprise Specification 的一部分,如果这很重要的话。

    我没有使用过 Blueprint,只是查看它的规范 - 除非您是 java bean 专家,否则我会远离它。另外,我更喜欢 iPOJO 而不是 DS,因为它在许多情况下似乎更聪明,而且做对了。

    【讨论】:

    • 您有关于如何测试基于 iPOJO 的 OSGi 应用程序的文档吗?谢谢!
    • 我想这取决于你想做什么样的测试。像集成测试这样的事情会更难——但话又说回来,我不会真正测试 iPOJO,因为我会信任框架。如果您的意思是单元测试,那么某种模拟框架会有所帮助(这个似乎对 OSGi 友好:easymock.org)。
    【解决方案2】:

    关于 iPOJO 单元测试,你可以使用构造函数(或构造函数注入)来注入模拟服务并有效地测试你的组件的行为:

    所以有两个选择:

    • 要么你有一个额外的构造函数来注入依赖 你需要使用模拟
    • 或者你的组件正在使用构造函数 注入,然后您只需使用模拟对象调用构造函数

    如果您尝试进行集成测试,您可以只使用 pax 考试并部署您的捆绑包(除了 iPOJO)。

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 2012-06-25
      • 2018-01-27
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多