在我的團隊成員中,我以忘記維護(JUnit)測試套件而聞名。 我只是無法為此付出額外的手動為套件添加測試的步驟。 幸運的是,有連續的集成服務器通過命名模式收集測試。 如果我介紹的一項孤立測試失敗了,那么它會脫穎而出。
為了彌補這一點,我創建了一個(幾乎)免維護的測試運行器。 雖然普通的JUnit測試已經有了這種東西 ,但我找不到OSGi測試的類似東西。
當具有多個捆綁軟件時,您通常會擁有一個主測試套件,該套件會匯總所有每個捆綁的測試套件。 要使用BundleTestSuite ,只需替換您的主測試套件,如下所示:
@RunWith( BundleTestSuite.class ) @TestBundles( { "org.example.bundle1", "org.example.bundle2" } ) public class MasterTestSuite { }
RunWith注釋告訴JUnit使用BundleTestSuite測試運行程序。 然后,該測試運行程序評估TestBundles批注,并從其中列出了符號名稱的所有捆綁軟件執行測試。 如果創建新捆綁包,則將其名稱添加到TestBundles列表中,并將拾取該捆綁包(或其片段)包含的所有測試。 當前通過名稱來標識測試類別。 名稱以“ Test”結尾的所有類均被視為測試類。
反思性收集測試的副作用是,您可以刪除所有變通辦法(Eclipse-ExtensibleAPI等),以使片段中的測試對外部可見。
當在Eclipse中作為PDE JUnit Tests運行測試時 ,捆綁軟件的布局不同于常規打包的捆綁軟件。 BundleTestSuite考慮了這一點,并在收集測試時解決了Equinox中的錯誤 。 不幸的是,此問題也影響到Tycho 。 當前,BundleTestSuite不能與Tycho一起運行,因此您現在必須繼續使用surefire include / exclude指令。
該代碼可在Eclipse Public License下獲得,并托管在GitHub上 。 可以從此p2存儲庫獲得最新的穩定版本:http://rherrmann.github.io/osgi-testsuite/repository
事實證明,這個小工具在某些項目中已經有用了一段時間,因此我認為它也可能對您有所幫助。 如果您有任何反饋意見,請發表評論或提出問題 。
翻譯自: https://www.javacodegeeks.com/2013/07/an-automated-osgi-test-runner.html