eclipse 扩展_Eclipse扩展的轻量级集成测试
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 擴展
總結
以上是生活随笔為你收集整理的eclipse 扩展_Eclipse扩展的轻量级集成测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mecity是什么牌子 mecity牌子
- 下一篇: zz测试接口_使用FizzBuzz和