你好,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的任何配置?
歡迎上述分析的任何提示!