我可能会问一个微不足道的问题。刚开始用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中安装一样或类似。
答案 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容器测试添加这样一个简单的示例测试项目。