2012-04-18 40 views
4

我目前正在研究如何最好地测试我们准备在Apache Karaf上运行的OSGi应用程序。明显的选择是使用labs-paxexam-karaf的Pax考试(教程参见http://iocanel.blogspot.com/2012/01/advanced-integration-testing-with-pax.html)。然而,我对绩效表示担忧(因为Pax考试显然为每种测试方法启动了一个新框架)。我也发现Arquillian has some OSGi support,虽然这不是它的主要焦点。 JUnit4osgi不是一个选项,因为它只支持JUnit 3.Arquillian与OSGi(集成)测试的Pax Exam相比如何?

对于不熟悉任何一个框架的人来说,哪一个更好?什么是权衡?

回答

3

为什么使用Arquillian如果你是在正确的OSGi支持之后? =)

当看着PaxExam确保文档是指PaxExam 2 - 有V1和2

PaxExam之间的巨大差异将需要一段时间才能与交手,但你会学到堆关于OSGi在这个过程中(绝对是件好事,但仍然可能受到伤害)。

与@ Dmytro的回答并行,Test Containers包含一个Native容器,它与junit测试运行时具有相同的VM - 这意味着您可以在Eclipse中使用调试进行启动。这对org.eclipse.m2e特别适用:生命周期 - 映射maven eclipse插件和org.ops4j.pax.exam:maven-paxexam-plugin。这种方法非常棒,完整的IDE集成。

PaxExam文档有点稀疏,但有一些good examples(请参阅提供交互式shell的主要方法的本机启动程序)和wiki doc。如果你遇到邮件列表,人们([email protected])非常有帮助。

另一种选择是看Karaf's paxexam,非常光滑,容易得到一个Karaf实例启动和运行(features.xml等)。

就个人而言,我只是使用PaxExam2,因为我宁愿没有对框架提供程序的明确依赖关系(根本没有任何反对Karaf的东西,它很有可能)。

+0

你的第一句话仍然有效吗? Arquillian测试现在不在真正的OSGi容器中运行吗? – jblack 2014-04-08 19:20:10

3

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

2

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

随着Pax考试3.0.0.M1中引入的PerSuite策略,全部套件的测试类在同一个容器中运行。

顺便说一句,除了OSGi之外,Pax Exam 3.0还支持Java EE和CDI容器,所以与Arquillian有更多的功能相似性,只有Pax Exam来自另一端。

使用Pax考试,不需要在ShrinkWrap样式中组装部署,它们是从类路径自动构建的。而且,您可以使用共享配置运行测试类套件。