2013-09-26 27 views
0

我正在使用最新的Pax Exam(3.3.0)進行OSGi測試。我有Pax考試啓動和運行,部署和啓動我的包等。生活是美好的。Pax考試3.3.0 - 如何加載實用程序jar?

我也有一個實用程序項目,包含各種工廠和其他有用的功能,我希望能夠在多個測試項目中重複使用。這是一個maven項目,作爲Pax考試pom.xml的依賴項。

但是,只要我嘗試訪問實用程序jar中包含的任何類,就會得到一個ClassNotFoundException。我一直在玩類加載器,發現我可以通過URLClassLoader直接加載類。但是,我仍然拋出了ClassNotFoundException。

將工具項目變成一個包不是一個選項。我將需要在@BeforeClass註釋方法中使用實用程序代碼,並且尚未注入BundleContext實例。

有人能告訴我在Pax考試中獲得我的實用程序項目的最佳/最簡單的方法嗎?

回答

3

正如在official documentation,@BeforeClass中指出的,Pax考試不支持,至少不是以預期的方式。它由JUnit驅動程序執行,不在測試容器內部,這就是爲什麼沒有bundle上下文的原因。

如果你想讓你的代碼在容器中運行,它必須在一個包中。

此問題已被討論here

+0

我明白了。謝謝你的回答,這很簡單,但澄清了很多! – protectedmember

2

你可以簡單地把實用的罐子,並將其添加爲wrapped bundle。然後它將被加載到你的OSGI容器中。您只需要定義您需要的導出包。

相關問題