如何启动Pax-Exam的测试容器?

时间:2014-02-17 16:32:50

标签: osgi maven-3 pax-exam

我可能会问一个微不足道的问题。刚开始用Pax-Exam学习OSGi。

我所做的是一个mvn原型:为Hello World生成。我通过导入与PaxExam相关的导入和其他内容来更改AppTest.java。相应地更改了pom.xml以包含适当的依赖项。

当我做mvn依赖时:分析它说,

[警告]找到未使用的声明依赖项: [警告] org.ops4j.pax.exam:pax-exam-container-native:jar:3.4.0:test

当我进行mvn测试时,我收到以下错误

错误测试:   initializationError(com.test.maven.AppTest):在类路径上的META-INF / services中找不到服务org.osgi.framework.launch.FrameworkFactory

有人可以帮忙解决这个问题吗?我不知道该怎么办。

或者我想让Apple看起来像橙色?意思是,Pax考试只能在src / test / resources / META-INF / services /中使用jar吗?就像在Apache Felix中安装一样或类似。

1 个答案:

答案 0 :(得分:2)

您应该做的第一件事是创建一个通常称为itests的独立测试项目。当您直接将Pax考试集成到您需要测试资源的项目中时,它不能很好地工作。

所以创建一个这样的结构: / mymodule1 ... / mymodulen / itests

在mymodule项目中,您通常使用maven bundle插件创建bundle。您应该能够将它们安装到OSGi框架中。

然后在itests目录中将pax检查依赖项放入pom文件中。还要将依赖项放在您需要的模块以及它们的依赖项上。

在您的pax考试测试中,您可以在@Comnfiguration注释方法中定义所需的模块。我有created a pax exam example for the apache karaf container here

所以你看到我在测试中设置了karaf容器并添加了pax-exam-sample8-ds,这是我想要测试的模块。

getting started section in the user doc指导您完成示例项目:

不幸的是,我还没有为简单的felix和equinox容器设置这么简单的例子。因此,即使您计划使用普通容器,也可以从karaf示例开始,因为它可能会让您更快地启动。

一旦我有空闲时间,我计划为普通的OSGi容器测试添加这样一个简单的示例测试项目。