osgi 如何引入包_OSGi Testsuite:引入类名过滤器
osgi 如何引入包
OSGi Testsuite是一個JUnit測試運行程序 ,它動態(tài)地收集要執(zhí)行的測試類。 它已經由我的同伴Rüdiger大約一年前出版,并且已經在某些項目中證明有用。 但是對于gonsole,我們必須使用一個難看的補丁,因為1.0版僅支持.*Test后綴匹配測試類名稱。
我通過引入注解@ClassnameFilters (使用正則表達式來匹配任意名稱模式),在1.1版中解決了此問題。 這篇文章簡短地解釋了它是如何工作的。
OSGi測試套件
OSGi Testsuite提供了一個JUnit測試運行程序BundleTestSuite ,可用于運行給定數(shù)量的OSGi捆綁包內的所有測試。 要使用它,請使用@RunWith(BundleTestSuite.class)注釋一個類,并使用@TestBundles({"bundle.1", ...})指定捆綁。 運行時,JUnit將處理列出的捆綁軟件中的所有類,其名稱以'Test'結尾。
@RunWith( BundleTestSuite.class ) @TestBundles( { "org.example.bundle1", "org.example.bundle2" } ) public class MasterTestSuite {}不幸的是,Test postfix的固定結果顯得過于僵化。 在gonsole中,我們對單元測試和集成測試使用不同的后綴。 而且,我們不希望在OSGi Testsuite運行中執(zhí)行單元測試。 但是這種區(qū)別在1.0版中是不可能的。
類名過濾器
受ClasspathSuite (在純JUnit測試上與OSGi Testsuite的工作原理類似)的啟發(fā),我引入了一個@ClassnameFilters注釋。 這允許基于正則表達式定義過濾器以匹配任意測試名稱模式:
@RunWith( BundleTestSuite.class ) @TestBundles( { "org.example.bundle1", "org.example.bundle2" } ) @ClassnameFilters( { ".*ITest" } ) public class IntegrationTestSuite {}處理該示例將包括列出的捆綁軟件中所有類的測試,這些測試的名稱以'ITest'后綴結尾。 請注意,帶有簡單'Test'后綴的類將不被處理。
此外,可以使用前導'!'指定排除模式 :
@RunWith( BundleTestSuite.class ) @TestBundles( { "org.example.bundle1", "org.example.bundle2" } ) @ClassnameFilters( { ".*ITest", "!.*FooITest" } ) public class IntegrationTestSuite {}給定的示例現(xiàn)在將執(zhí)行列出的捆綁軟件中所有類的測試,這些類的名稱以'ITest'后綴結尾,但名稱以'FooITest'結尾的類除外。 很簡單,不是嗎?
結論
OSGi Testsuite的過濾器機制得到了增強,可以動態(tài)執(zhí)行與任意名稱模式匹配的測試類。 使用ClassnameFilters批注和正則表達式可以輕松完成過濾器規(guī)范。
該代碼可在Eclipse公共許可證下獲得,并托管在GitHub上:
https://github.com/rherrmann/osgi-testsuite
可以從此p2存儲庫中獲得最新的穩(wěn)定版本:
http://rherrmann.github.io/osgi-testsuite/repository
翻譯自: https://www.javacodegeeks.com/2014/11/osgi-testsuite-introducing-classname-filters.html
osgi 如何引入包
總結
以上是生活随笔為你收集整理的osgi 如何引入包_OSGi Testsuite:引入类名过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jboss maven_使用Maven配
- 下一篇: 网上预约备案(备案预约单)