2013-11-27 76 views
5

我在尋找可能性來測試一組eclipse插件,而不必爲每個測試的插件使用一個包。目前,我有一個運行Eclipse產品的PDE版本(約70個插件,功能和產品)。所有插件的所有單元測試都包含在一個簡單的java項目中,具有對所有插件的Eclipse項目引用,以便能夠實例化類並運行測試。由於普通Java項目未能完成所有目標平臺項目,因此我將PDE構建轉換爲maven tycho時不再有效。我沒有執行真正的OSGI插件測試,但是一些測試需要包含類路徑中包含的IProgressMonitor等核心eclipse類,因爲我在這些方法簽名中也使用了這些eclipse運行時接口。Eclipse Tycho:在不使用單個測試包的情況下測試插件

成功地建立新的Maven第谷建立後,我嘗試了幾種可能性,以獲得測試再次運行。

1)純Java測試項目轉換成插件測試項目
缺點:
- 爲了能夠在內部封裝測試類,我要每一個包裝導出與X-朋友:符號和要重複此過程爲每個新的測試包

2)添加第二個源文件夾在每個插件並將測試移動到相應的插件
缺點:
- Tycho似乎使用build.properties來包含編譯步驟所需的源文件夾。由於src/main/java和src/test/java都需要註冊爲源文件夾,因此真實類和測試類在target/classes輸出文件夾中混合並最終包含在插件的JAR文件中。我沒有找到一種方法來配置tycho使用src/main/java作爲sourceDirectory和src/test/java作爲testSourceDirectory。
- 如果包裝類型是「eclipse-test-plugin」,Tycho僅執行單元測試
- Sonar似乎不承認以這種方式執行的測試(我沒有花費大量時間來解決這個問題,也許有這點簡單的解決方案)

3)必要的Eclipse目標平臺的插件,純行家依賴加入到純Java測試項目
缺點:
- 的目標平臺信息被複制,一次在tycho構建的目標平臺上,一次在測試項目的maven依賴項列表中(用普通的maven-surefire執行)
個 - 目標平臺束在artifactory的展開兩次,一次作爲目標平臺P2存檔,而一旦如行家依賴(插件+ POM)

4)添加測試片段爲每個插件(這似乎是通常選擇的可能性)
缺點:
- 需要很大的努力(> 70插件,> 4500單元測試),所以我需要添加大約70個新的片段並分解所有測試。

此刻,可能性3)對我來說似乎是最合理的......任何建議? otherideas?

+0

只是另一個想法:你也可以將70個捆綁在一起......但是如果有很好的理由將生產性代碼分解成捆綁包,那麼分離測試可能也是有意義的。我不明白爲什麼應該單獨處理測試(除了遷移工作)。 – oberlies

+0

它確定將測試項目拆分爲單個包是有意義的,但是這需要幾周的工作,而我們沒有(並且沒有得到報酬)。我們決定使用方法3,但遇到其他問題,我更新了上述問題。建議? – Paolo

+0

Paolo,你用你的發現來更新你的文章是件好事,但你應該把你的解決方案變成一個答案。在stackoverflow上明確允許回答你自己的問題。 – oberlies

回答

1

最後,我們使用的方法3

不幸的是另外約目標平臺罐子所提到的缺點,我們也發現,我們需要添加兩次,每次的第三方的依賴。例如,apache-commons-math依賴關係必須在生產者插件A(lib文件夾中的jar,並在清單中作爲bundle-classpath引用)中添加一次,並且一次作爲測試項目POM中的Maven依賴項。我們沒有找到其他方式來獲得測試項目編譯。基本上,測試項目並不認可Eclipse插件A中包含的jar文件,因爲它是Eclipse依賴項,而不是Maven項。但另一方面,如果我將庫作爲Maven依賴項添加到插件A中並從lib文件夾中刪除該jar,Eclipse IDE將無法編譯該項目,因爲該庫缺失(Maven依賴項不能通過M2E,如果項目有包型Eclipse的插件)

我們的設置現在看起來像這樣(簡化):

父POM

  • Eclipse插件A,封裝類型Eclipse的插件,[lib文件夾中的apache-commons-math,添加到Manifest Bundle-ClassPath]

  • Eclipse插件B,包類型Eclipse的插件

  • 測試項目,包型罐時,Maven依賴於POM到插件A和B和Maven依賴於APACHE-公地數學。

有什麼建議嗎?

相關問題