如何获得PAX Exam OSGi测试运行的测试包的传递依赖性

时间:2016-12-12 00:21:28

标签: java maven osgi integration-testing pax-exam

我正在使用PAX Exam进行集成测试。我想要测试的捆绑包取决于其他几个捆绑包。不幸的是,我无法自动获取所有依赖项。

在我的测试课中我有

@Configuration
public Option[] config() {
    return options(
        junitBundles(),
        mavenBundle("io.moquette", "moquette-broker")
    );
}

遗憾的是,它并没有引入moquette-broker的所有依赖关系,只是单个jar本身。

测试类中是否有一种方法可以指定它应该使moquette-broker的所有依赖项都可用于运行?有没有办法把它放在test-maven-plugin的pom.xml中?当然,我在文档中没有看到任何内容。或者我是否会被要求在课堂上列举它们?

1 个答案:

答案 0 :(得分:0)

在普通PAX考试中无法获得此行为。您必须在测试的@Configuration元素中列出所有依赖项。

使用Apache Karaf或bndtools的两种简化方法。两者都以非常不同的方式提供帮助。

如果您使用karaf作为部署平台,那么您可以将应用程序定义为功能。在该功能中,您必须列出所有捆绑依赖项,例如pax考试,但您也可以参考其他此类功能。所以在实践中它的工作要少得多。 Pax考试也可以根据功能进行这样的karaf测试。请参阅Aries JPA example

另一种选择是在那里使用bndtools你首先定义一个索引。该索引可以基于pom并且还可以包括传递依赖性。 然后,对于您的测试,您只需要部署顶级捆绑包来定义bndrun文件。然后,解析器将自动确定有效的运行清单列表。 See this test run definition of Aries jax-rs whiteboard。不幸的是,这与pax考试并不一致。 Bndtools有自己的跑步者。正如您在使用的快照版本中看到的那样,bndtools的maven集成也不是那么稳定。下一版本的bndtools(3.4.0)希望只允许发布版本。