【问题标题】:How to start test container for Pax-Exam?如何启动 Pax-Exam 的测试容器?
【发布时间】:2014-03-17 01:30:17
【问题描述】:

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

我所做的是一个 mvn archetype:generate for Hello World。我通过导入 PaxExam 相关的导入和其他内容更改了 AppTest.java。相应地更改了 pom.xml 以包含正确的依赖项。

当我做 mvn dependency:analyze 它说,

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

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

测试错误: InitializationError(com.test.maven.AppTest): No service org.osgi.framework.launch.FrameworkFactory found in META-INF/services on classpath

谁能帮忙解决这个问题?我不知道如何在这里进行。

还是我想让苹果看起来像橘子?意思是,Pax Exam 只能与 src/test/resources/META-INF/services/ 中的 jar 一起使用?就像在 Apache Felix 或类似中安装一样。

【问题讨论】:

    标签: osgi maven-3 pax-exam


    【解决方案1】:

    您应该做的第一件事是创建一个单独的测试项目,通常称为 itests。当您将 Pax 考试直接集成到您有要测试的源代码的项目中时,Pax 考试效果不佳。

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

    在 mymodule 项目中,您通常使用 maven 捆绑插件创建捆绑包。您应该能够将它们安装到您的 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 容器测试添加这样一个简单的示例测试项目。

    【讨论】:

    • 当我尝试创建项目时,出现以下异常。有任何想法吗? BundleException:无法解析捆绑包“org.apache.felix.gogo.commands_0.4.0 [332]”。原因:缺少约束:Import-Package: org.osgi.service.command; version="0.4.0" 我还根据一些谷歌搜索添加了以下内容。 org.apache.felix.service.command, org.apache.felix.gogo.commands, org.apache.karaf.shell.console, *
    • 我觉得你的 gogo 版本可能太旧了。你可以试试0.10版本吗? search.maven.org/…
    • Scheider 我试过了。现在测试运行成功。但我得到了以下异常。我们可以忽略它还是我错过了什么? 14:34:25.091 错误 [[ACCESS_RUNTIME] NodeCleaupShutdownHook] [Logger.java:252] 执行 NodeCleaupShutdownHook。 org.eclipse.osgi.framework.eventmgr.ListenerQueue.(ListenerQueue.java:62) 的线程“Thread-24”java.lang.IllegalArgumentException 中的异常
    • 从源代码中此异常的位置来看,您可能只是缺少 EventAdmin 模块。因为它是可选的,所以应该不是问题。
    • 有什么简单的方法可以克服这个异常吗?它是在打印测试结果状态之后出现的。所以感觉配置有问题!
    猜你喜欢
    • 2015-05-22
    • 2013-02-10
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2013-11-19
    • 2012-08-14
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多