如何在pax考试中启动和关闭第二个OSGi容器

时间:2016-06-22 09:08:53

标签: osgi pax-exam

我正在使用pax考试测试远程服务。

要做到这一点,我需要启动两个容器。一个本地运行我的测试调用消费者,另一个运行服务,Aries RSA和zookeeper。

我设法通过在@Configuration方法中调用它来启动外部容器。它似乎并不属于那里,但它是我在OSGi之外执行代码的唯一地方。

请参阅https://github.com/apache/aries-rsa/blob/master/itests/felix/src/test/java/org/apache/aries/rsa/itests/felix/tcp/TestRoundTrip.java#L47-L51

现在我需要第二个钩子,当测试关闭时我会调用它来关闭容器。 @After或@AfterClass似乎无法在OSGi中运行。

我也很高兴有一种更简洁的启动外部容器的方法,因为在@Configuration中添加它对我来说感觉不对。

1 个答案:

答案 0 :(得分:3)

我现在找到了一个解决方案,但我仍然希望有一些开箱即用的功能。

我创建了一个新的Pax跑步者TwoContainerPaxExam。它查找用@ServerConfiguration注释的第二个配置,在测试之前启动它并在之后将其关闭。

所以我的测试现在看起来像TestRoundTrip。如果没有任何开箱即用,我会尝试将此解决方案纳入考试。