0

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

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

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

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

谁能告诉我在 Pax Exam 中获取我的实用程序项目的最佳/最简单方法?

4

2 回答 2

3

正如官方文档中指出的那样,@BeforeClassPax Exam 不支持,至少不以预期的方式支持。它由 JUnit 驱动程序执行,而不是在测试容器内,这就是为什么没有包上下文。

如果您希望您的代码在容器中运行,它必须在一个包中。

这个问题已经在这里讨论过了。

于 2013-09-26T20:30:09.873 回答
2

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

于 2015-09-29T09:44:34.070 回答