2012-03-28 79 views
0

我在測試插件/項目中有幾個測試文件寫在我的DSL中。大多數測試使用內聯多行字符串和Xtend,但在四種情況下,我需要測試代碼,這些代碼對URL和類路徑有一定的魔力,所以我真的需要類路徑中的資源。如何禁用我的測試插件中的代碼生成?

由於加載資源只適用於擴展名正確的情況,所以我不能給這些文件一個假擴展名。

現在我的問題:我的DSL也有一個代碼生成器。這意味着最終,我最終會在一些我無法擁有它們的地方生成一些文件(例如,它們不會進行編譯,甚至在包含多個文件時將測試錯誤處理進行測試時出錯) )。

我不能禁用Xtext性質,因爲測試項目使用Xtend所以對於這些文件,我確實需要代碼生成。

由於生成器在Eclipse內部運行(我爲其他項目安裝了DSL插件),因此無法覆蓋Guice中的代碼生成器。

如何在這種情況下禁用代碼生成器?

+0

你的設置是非常複雜的,這是一個有點難以明白你真正想要實現......都寫在這些「測試文件我的DSL「實際的JUnit測試,還是包含用於測試的數據?您正在嘗試進行單元測試或集成測試?你正在測試系統的哪一部分 - 代碼生成部分,還是必須先生成的東西?爲什麼你不能嘲笑資源,或者與其他文件一起生成適當的測試代碼? – weltraumpirat 2012-03-31 09:35:56

+0

我的測試文件是測試使用的數據。在這種情況下,我不確定他們是UT還是IT - 這有什麼關係嗎?我正在測試自己的代碼生成器,Xtext的CG作品。我解釋了爲什麼我不能嘲笑資源:他們必須在類路徑上。我正在考慮更改測試用例以將資源複製到bin /文件夾,但我想知道這是否是最好的方法。 – 2012-03-31 10:02:39

+0

UT和IT之間的區別在於,在單元測試中,我總是試圖找到一種方法來模擬*所有*依賴,而整合測試的重點是看看所有部分是否合在一起......在你的情況,我會先說單元測試,然後看看你的測試覆蓋是否有任何盲點。你從哪裏得到類路徑細節?必須有一個調用來讓生成器訪問這些對象,所以這就是你應該嘲笑的依賴(即返回假的類路徑條目,並驗證這些對象的「魔術」)。 – weltraumpirat 2012-03-31 10:08:20

回答

1

有一個簡單的方法來實現這一目標:

  1. 打開項目
  2. 的性質展開您的DSL
  3. 選擇「編譯」
  4. 選擇條目「啓用項目特定的設置「
  5. 禁用/取消選擇」常規「下的」編譯器已激活「

如果你沒有爲你的DSL一個屬性條目:

  1. 添加該片段到您的工作流程.mwe2文件:

    fragment = generator.GeneratorFragment {} 
    
  2. 重新生成項目

  3. 合併的新代碼從plugin.xml_genplugin.xml都在基礎和UI插件。

有趣的部分是兩個擴展點org.eclipse.ui.preferencePagesorg.eclipse.ui.propertyPages

+0

請注意,從頭開始創建的項目已經應用了所有這些設置,因此不需要編輯mwe2文件。 – 2012-04-03 13:39:36

相關問題