Pax Exam 3.3.0 - 如何加载实用工具罐?

时间:2013-09-26 10:57:57

标签: osgi pax pax-exam

我正在使用最新的Pax考试(3.3.0)进行OSGi测试。我有Pax考试并运行,部署和启动我的捆绑等。生活很美好。

我还有一个包含各种工厂和其他有用功能的实用程序项目,我希望能够在多个测试项目中重用它们。这是一个maven项目,作为Pax Exam pom.xml的依赖项。

但是,只要我尝试访问实用程序jar中包含的任何类,我就会得到ClassNotFoundException。我一直在玩类加载器,发现我可以通过URLClassLoader直接加载类。但是,我仍然会抛出ClassNotFoundException。

将实用程序项目转换为捆绑包不是一种选择。我需要在@BeforeClass注释方法中使用实用程序代码,而BundleContext实例尚未注入。

有人能告诉我在Pax考试中获得实用程序项目的最佳/最简单方法吗?

2 个答案:

答案 0 :(得分:3)

正如official documentation中指出的那样,Pax考试不支持@BeforeClass,至少不是以预期的方式。它由JUnit驱动程序执行,而不是在测试容器内执行,这就是没有包上下文的原因。

如果您希望代码在容器中运行,则必须捆绑在一起。

此问题已经讨论过here

答案 1 :(得分:2)

您可以简单地使用实用程序jar并将其添加为wrapped bundle。然后它将被加载到您的OSGI容器中。您只需要定义所需的导出包。