2009-08-12 43 views
2

你好,Eclipse RCP的:使用不同JUnit版本(4.3.1)不是附帶月食伽利略(4.5.0)

我有以下情況:

我們正在開發一個Eclipse RCP應用程序並希望從Eclipse 3.4切換到Eclipse 3.5。我們的JUnit測試使用JUnit 4.3.1,我們有一個啓動配置來啓動我們的測試套件。我想我不需要在這裏詳細介紹。

的問題是:

運行與Eclipse 3.5的測試不起作用:JUnit的找不到在測試類任何註釋(既不是(在)測試,也沒有(在)RunWith)。


我修補了JUnit庫的一些日誌輸出,以檢查是怎麼回事。我發現這個問題是一個類加載問題:

傳遞給JUnit'的測試類位於'一個ClassLoader,它不同於JUnit用來加載類似'RunWith'的註解類的ClassLoader。這不是在Eclipse 3.4

in org.junit.internal.requests.ClassRequest: 

public Runner getRunner() { 
    log("TestClass  ClassLoader: "+this.fTestClass.getClassLoader()); 
    log("RunWith.class ClassLoader: "+RunWith.class.getClassLoader()); 
    ... // validating test class: searching for annotations and more 

} 

第一行印刷另一類加載器比所述第二線的情況下。這很糟糕,因爲JUnit 無法與具有註釋類(此處爲RunWith.class)的測試類中的註釋相匹配:CL1中的「RunWith」不等於CL2中的「RunWith」。


我有一個指向核心問題的解決方案:更換的JUnit 4.5在Eclipse伽利略與JUnit的4.3.1,這樣只有一個基於JUnit的版本:試運行和測試類都使用JUnit 4.3.1(我必須修補「org.eclipse.jdt.junit4.runtime」以接受ealier junit版本)。

我想我也可以用4.5版本替換測試類中的JUnit 4.3.1,但這不是一個選項。

猜測:的類加載器是不同的,因爲類「來自」不同的JUnit軟件包:從4.3.1版本,其標註的TestClass中和測試版本運行4.5

我想知道:除了修補Eclipse(替換JUnit版本)之外是否還有其他解決方案?任何命令行參數或類似的?強制Eclipse使用JUnit 4.3.1的任何配置?

歡迎上述分析的任何提示!

回答

0

我不知道這是你在找什麼,但:

運行配置的JUnit測試,您可以選擇測試運行要使用(JUnit 4中, JUnit 3 ...)