我想编写一个 JUnitTest,它可以确保我的 Karaf 服务器正常启动并且所有(需要的)Bundle 都已安装并处于活动状态。
为此,我有一个测试,调用一个辅助方法“assertBundleState”,以确保给定的 Bundle 处于给定的状态。测试如下所示:
@Test (timeout=30000L)
public void testBundlesStarted() throws Exception {
assertBundleState("bundle.Name", BundleLifecycleState.Active);
... <other bundles in similar way>
}
这在过去工作得很好。从未达到超时。
不幸的是,我现在必须加载一个包,这需要更长的时间才能启动。所以当测试执行时,Bundles 还没有启动。所以测试失败了。
我已经在 BeforeClass 方法中使用 sleep 进行了尝试,但我对这个解决方案并不满意。因为我无法确保每次给定的睡眠时间在每台机器上都足够。所以我正在寻找一些基于事件的解决方案来与 Karaf 进行交互。
@BeforeClass
public static void init() throws Exception {
Thread.sleep(120000L);
}
有人知道如何以更好的方式解决它吗?谢谢