Eclipse扩展的轻量级集成测试
最近,我為Eclipse擴展點評估引入了一個小助手。 輔助程序努力減少通用編程步驟的樣板代碼,同時增加開發指導和可讀性。
這篇文章是希望的后續文章,展示了如何將實用程序與AssertJ定制斷言結合使用,以編寫針對Eclipse擴展的輕量級集成測試。
Eclipse擴展
在Eclipse中,松耦合是通過擴展點和擴展機制部分實現的。 因此,擴展充當對特定擴展點的貢獻。 但是,擴展名和擴展點的聲明性有時會導致出現問題,可能很難跟蹤。
如果偶然刪除了擴展聲明,使用參數擴展了可執行擴展的默認構造函數,未將plugin.xml添加到build.properties可能是這種情況。
取決于PDE錯誤/警告設置,應該通過標記將許多此類問題告知他人,但是由于某種原因,它會一次又一次地發生,導致無法識別貢獻,并且由于錯誤跟蹤而浪費了寶貴的時間。
因此,進行輕量級集成測試以驗證是否確實可以使用某個貢獻可能會有所幫助。
有關如何使用擴展點機制擴展Eclipse的一般信息,您可以參考在線文檔的《 插件開發環境指南 》。
與JUnit插件測試的集成測試
給定最后一個帖子的擴展點定義...
…擴展貢獻可能看起來像這樣:
<extensionpoint="com.codeaffine.post.contribution"><contributionid="myContribution"class="com.codeaffine.post.MyContribution"></contribution></extension>假設我們具有“使用片段測試插件”中所述的測試片段 ,我們可以引入PDETest來驗證上面具有給定id的擴展是否存在并且可以由默認構造函數實例化。 此測試利用了上一篇文章介紹的RegistryAdapter和稱為ExtensionAssert的特定自定義斷言:
public class MyContributionPDETest {@Testpublic void testExtension() {Extension actual = new RegistryAdapter().readExtension( "com.codeaffine.post.contribution" ).thatMatches( attribute( "id", "myContribution" ) ).process();assertThat( actual ).hasAttributeValue( "class", MyContribution.class.getName() ).isInstantiable( Runnable.class );} }如前一篇文章所述, RegistryAdapter#readExtension(String)精確讀取給定“ id”屬性的一個擴展名。 如果它使用此屬性檢測到多個貢獻,則將引發異常。
ExtensionAssert#assertThat(Extension) (通過靜態導入使用)提供了一個AssertJ自定義斷言,該斷言提供了一些對擴展貢獻的常見檢查。 該示例驗證了'class'屬性的值與該貢獻的實現類型的完全限定名稱匹配,該可執行擴展實際上可以使用默認構造函數實例化,并且該實例可分配給Runnable 。
在哪里得到的?
對于那些想要簽出的人,有一個P2存儲庫,其中包含com.codeaffine.eclipse.core.runtime和com.codeaffine.eclipse.core.runtime.test.util功能, 其中提供RegistryAdapter和ExtensionAssert 。 該存儲庫位于:
- http://fappel.github.io/xiliary/
源代碼和問題跟蹤器托管在:
- https://github.com/fappel/xiliary
盡管目前完全沒有文檔,但是應該很容易從本文和上一篇文章的說明開始。 但是請記住,這些功能還處于早期狀態,可能會發生一些API更改。 特別是,嵌套擴展的斷言目前似乎太弱了。
如果您有改進的想法或發現了一些錯誤,則問題跟蹤器可能是處理此問題的最佳位置,其他任何地方都可以使用下面的評論部分。
翻譯自: https://www.javacodegeeks.com/2014/11/lightweight-integration-tests-for-eclipse-extensions.html
總結
以上是生活随笔為你收集整理的Eclipse扩展的轻量级集成测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux客户端安装路由器(linux
- 下一篇: 什么是防御过当(什么是防御cc ddos