2014-03-05 36 views
2

我正在Eclipse JDT中開發一個項目,它對OSGI具有可選的依賴關係 - 也就是說,它支持用作OSGI包,並且如果它在OSGI環境中用作包,它也會引用一些類來自OSGI。如何修改Eclipse運行配置類路徑?

現在我想寫JUnit測試用例OSGI內都運行,沒有OSGI運行,包括在兩個不同的測試套件。 OSGI測試是作爲JUnit Pulg-in測試運行的,非OSGI測試應該像正常的JUnit測試一樣運行。

現在我有問題,我找不到在Eclipse中的任何方式來準確指定JUnit測試運行配置類路徑和排除可選的OSGI罐子。

是否有任何方法可以排除jar或修改Eclipse Run Configuration的默認類路徑? 如果沒有,有沒有人有建議,在這種情況下應該如何設置JUnit測試?

唯一的解決辦法我能找到的,要創建從我的單元測試一個jar文件,並從不同的項目,類路徑的測試jar文件運行,而不OSGI測試。但我更喜歡更優雅的解決方案,理想情況下不需要第二個測試項目。

+0

如果我期待在Eclipse運行配置(運行 - >運行配置...),我看到了「類路徑」選項卡,可手工調整它爲運行配置。 – Gimby

+0

@Gimby你能夠從這個類路徑選項卡中刪除條目嗎?我只能在那裏添加新條目(使用Eclipse Luna M5)。我也無法看到確切的類路徑 - 只是引用的項目和虛擬類路徑文件夾的名稱,如「插件依賴項」。 – Balder

+0

也許我的情況更容易,因爲我使用Maven。但是,是的,我可以做所有這些,儘管我不得不否決Maven爲我做的事情。注意:我使用TestNG,而不是JUnit。也許這很重要。 – Gimby

回答

2

在Gimbys評論的幫助下,我解決了這個問題。儘管在Eclipse中不可能修改由JDT生成的默認類路徑,但可以完全刪除默認的類路徑,然後在運行時配置的類路徑選項卡中添加自己的類路徑。

要刪除默認的類路徑,就必須選擇是當前運行的項目命名的根項,然後單擊「刪除」按鈕。之後,可以添加應該加載到類路徑中的所有jar文件和項目。這種方法的缺點是,這些jar文件通常由Eclipse插件提供,例如,必須手動選擇junit.jar(例如,將其添加到項目的庫文件夾中或通過在Eclipse安裝文件夾的plugins目錄中選擇外部jar)。

0

我會建議你在4個獨立的項目拆分項目:

  • 邏輯:這個包包含了所有的邏輯,所以基本上你的程序/插件做什麼
  • 邏輯.plugin:該項目類似於插件項目(OSGI-Bundle)。該項目僅包含您的插件所需的配置以及依賴於osgi的所有配置。它依賴於您的Logic Project。
  • Logic.plugin.test:您的osgi包的所有測試用例。它是分裂邏輯和測試用例
  • Logic.cli正常插件的方法:此項目包含在命令行接口(或任何您的替代應用程序)。這也取決於邏輯項目。

如果您的CLI項目只有很小的話,您可以將它與Logic項目合併。

+0

是的,如果我完全控制了這個項目,這肯定是一條路。但是,OSGI軟件包已經在生產環境中使用,並且在不使用OSGI的情況下使用它的支持稍後添加。目前還沒有辦法將OSGI邏輯與非OSGI邏輯完全分開,但又不會破壞API ... – Balder

+0

這不是很好,但是您可以將JUnit測試用例移動到單個項目嗎?你是否使用任何構建軟件(mvn,gradle,ant)? –

+0

JUnit測試用例已經在不同的項目中,但是這個項目也依賴於OSGI。我想我可以將非OSGI測試移動到單獨的項目中,並從OSGI測試項目中引用它......但如果可能的話,我仍然更喜歡以某種方式修改運行時配置的類路徑。 – Balder