【问题标题】:How does Arquillian compare to Pax Exam for OSGi (integration) testing?Arquillian 与用于 OSGi(集成)测试的 Pax 考试相比如何?
【发布时间】:2012-04-29 19:18:30
【问题描述】:

我目前正在研究如何最好地测试我们打算在 Apache Karaf 上运行的 OSGi 应用程序。显而易见的选择是使用labs-paxexam-karaf 的 Pax Exam(有关教程,请参阅http://iocanel.blogspot.com/2012/01/advanced-integration-testing-with-pax.html)。但是,我担心性能(因为 Pax Exam 显然为每种测试方法启动了一个新框架)。我还发现Arquillian has some OSGi support,虽然这不是它的主要关注点。 JUnit4osgi 不是一个选项,因为它只支持 JUnit 3。

对于不熟悉任一框架的人来说,从哪个开始更好?有什么取舍?

【问题讨论】:

    标签: testing osgi jboss-arquillian pax pax-exam


    【解决方案1】:

    Pax Exam 2.x 的 EagerSingleStagedReactorFactory(在 Pax 3.0 中别名为 PerClass)允许您在同一个 OSGi 容器中运行给定类的所有测试方法。

    使用 Pax Exam 3.0.0.M1 中引入的 PerSuite 策略,您的套件的所有测试类都在同一个容器中运行。

    顺便说一句,Pax Exam 3.0 除了支持 OSGi 外,还支持 Java EE 和 CDI 容器,因此与 Arquillian 的功能更加相似,只是 Pax Exam 来自另一端。

    使用 Pax Exam,无需以 ShrinkWrap 样式组装部署,它们是从类路径自动构建的。此外,您可以使用共享配置运行测试类套件。

    【讨论】:

      【解决方案2】:

      如果您需要适当的 OSGi 支持,为什么要使用 Arquillian? =)

      查看 PaxExam 时,请确保文档参考 PaxExam 2 - v 1 和 2 之间存在重大差异。

      PaxExam 需要一段时间才能掌握,但您会在此过程中学到很多关于 OSGi 的知识(绝对是一件好事,但仍然会受到伤害)。

      与@Dmytro 的回答并行,Test Containers 包含一个本机容器,该容器与 junit 测试使用相同的 VM 运行 - 这意味着您可以在 Eclipse 中使用调试启动。这特别适用于 org.eclipse.m2e:lifecycle-mapping maven eclipse 插件和 org.ops4j.pax.exam:maven-paxexam-plugin。这种方法非常棒,完整的 IDE 集成。

      PaxExam 文档有点稀疏,但有一些 good examples(请参阅提供交互式 shell 的带有 main 方法的 Native 启动器)和 wiki doc。如果您遇到问题,邮件列表人员 (general@lists.ops4j.org) 会非常有帮助。

      另一种选择是查看Karaf's paxexam,它非常流畅且易于启动和运行 Karaf 实例(features.xml 等)。

      就我个人而言,我只使用 PaxExam2,因为我不希望对框架提供者有明确的依赖(完全不反对 Karaf,它很糟糕)。

      【讨论】:

      • 你的第一句话还有效吗? Arquillian 测试现在不是在真正的 OSGi 容器中运行吗?
      【解决方案3】:

      基于Reactor Strategies Pax-Exam 可以在同一个 OSGi 容器中运行所有测试方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-17
        • 2017-04-26
        • 1970-01-01
        • 2014-08-14
        • 2012-02-12
        • 2016-06-19
        • 1970-01-01
        • 2013-02-10
        相关资源
        最近更新 更多