OSGi Testsuite:引入类名过滤器
OSGi Testsuite是一個JUnit測試運行程序 ,它動態地收集要執行的測試類。 它已經由我的同伴Rüdiger大約一年前出版,并且已經在某些項目中證明是有用的。 但是對于gonsole,我們必須使用一個難看的補丁,因為1.0版僅支持.*Test后綴匹配測試類名稱。
我通過引入注解@ClassnameFilters (使用正則表達式匹配任意名稱模式)解決了1.1版的問題。 這篇文章簡短地解釋了它是如何工作的。
OSGi測試套件
OSGi Testsuite提供了一個JUnit測試運行程序BundleTestSuite ,可用于運行給定數量的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運行中執行單元測試。 但是這種區別在1.0版中是不可能的。
類名過濾器
受ClasspathSuite (在純JUnit測試上與OSGi Testsuite的工作原理類似)的啟發,我引入了一個注解@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 {}給定的示例現在將執行列出的捆綁軟件中所有類的測試,這些類的名稱以'ITest'后綴結尾,但名稱以'FooITest'結尾的類除外。 很簡單,不是嗎?
結論
OSGi Testsuite的過濾器機制得到了增強,可以動態執行與任意名稱模式匹配的測試類。 使用ClassnameFilters批注和正則表達式可以輕松完成過濾器規范。
該代碼可在Eclipse Public License下獲得,并托管在GitHub上:
https://github.com/rherrmann/osgi-testsuite
可以從此p2存儲庫獲得最新的穩定版本:
http://rherrmann.github.io/osgi-testsuite/repository
翻譯自: https://www.javacodegeeks.com/2014/11/osgi-testsuite-introducing-classname-filters.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的OSGi Testsuite:引入类名过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 角瓜片怎么炒好吃 炒角瓜片的做法
- 下一篇: 需要微缓存吗? 营救记忆