2016-12-12 40 views
0

我正在使用PAX考試進行集成測試。我想測試的捆綁包取決於其他幾個捆綁包。不幸的是,我無法自動獲取所有依賴關係。如何獲得PAX考試的測試包的傳遞依賴關係OSGi測試運行

在我的測試類我有

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

遺憾的是它並不適用於所有的依賴關係絨毛經紀人,只是單一的罐子本身的拉動。

有沒有在測試類中指定它應該使所有運行moquette-broker的依賴關係的方法?有什麼方法可以將它放在exam-maven-plugin的pom.xml中?當然,我沒有看到文檔中的任何內容。或者我會被要求在課堂上列舉他們?

回答

0

在普通PAX考試中無法獲得此行爲。您必須在您測試的@Configuration元素中列出所有依賴項。

使這個更簡單的兩種方法是使用Apache Karaf或bndtools。兩者都以不同的方式提供幫助。

如果您使用karaf作爲部署平臺,那麼您可以將您的應用程序定義爲一項功能。在該功能中,您必須列出像pax考試中的所有捆綁軟件依賴關係,但您也可以參考其他此類功能。所以在實踐中這是少得多的工作。 Pax考試也可以運行基於功能的卡拉夫考試。請參閱Aries JPA example

另一種選擇是在那裏首先使用bndtools定義一個索引。該索引可以基於pom,也可以包括傳遞依賴。 然後,爲了您的測試,您只需定義一個bndrun文件,並配置頂級捆綁軟件包。解析器將自動確定runbundles的有效列表。 See this test run definition of Aries jax-rs whiteboard。不幸的是,這不能與pax考試一起工作。 Bndtools有自己的跑步者。 bndtools的maven集成也不像您在使用的快照版本中看到的那樣穩定。下一個版本的bndtools(3.4.0)希望允許在發佈版本的時候這樣做。

+0

Ahh,k,謝謝Christian。我開始認爲可能是這樣。不幸的。 現在我會讓Pax Exam考試,但是一旦他們將Maven的東西分類,可能會轉移到bndtools。這是針對我想要作爲OSGi捆綁包的其他項目。對於我自己的項目,我使用Gradle作爲buildtool,我會看到bndtools在Gradle中的工作情況。 – Keith

+0

卡拉夫看起來很有趣。我通常爲我的系統使用vanilla Felix,但肯定會考慮使用Karaf來包圍我的系統,或者將它用於雲端點。 – Keith