我最近升級到 JUnit 5,并且我正在嘗試通過 junit-jupiter-vintage 維護一個 JUnit 4 套件,使用幾乎在任何地方都可以找到示例的地方提供的確切說明。請注意,我正在使用離線構建,因為我必須這樣做,所以雖然我可以下載我需要的任何 Jar,但我沒有主動連接到任何 Maven 存儲庫。Gradle 版本是 4.9,-all.zip 發行版,不是安裝包而是解壓縮并添加到 PATH 變量(一點也不重要)。apply plugin: 'java'repositories{ flatDir dirs: 'file:$rootDir/lib'}test{ useJUnitPlatform()}dependencies{ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.0' testCompileOnly 'junit:junit:4.12' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.0' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.5.1'}輸出令人失望:NoClassDefFoundError: org/junit/platform/engine/support/hierarchical/HierarchicalTestEngine這些是在 JUnit Platform jar 中找到的文件,用作 JUnit 5 的啟動引擎。Gradle 4.6 及更高版本應該原生支持該引擎,我可以在gradle-4.9/lib/plugins/ ... junit-platform-commons-1.0.3.jar junit-platform-engine-1.0.3.jar junit-platform-launcher-1.0.3.jar ...手動添加最新平臺作為 testRuntimeOnly 依賴項似乎允許我的 JUnit 5 測試文件工作,但它無法檢測到我的任何 JUnit4 測試。這也感覺像是一個明顯的 hack,因為我可以找到的每個示例構建文件都不需要這樣做。我希望如果我能解決 gradle 問題,我也能解決我的 JUnit4 問題。為什么我的(離線)gradle 構建無法找到 JUnit5 的主要測試運行程序?
1 回答

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
Gradle 正在嘗試使用 Maven 存儲庫來解決傳遞依賴關系,并且由于此安裝是離線的,因此無法這樣做。所有 JUnit 傳遞依賴項都需要位于運行時類路徑中,在本例中這意味著手動包含它們。
我將使用 Maven 解決這個問題并將它們全部下載到這臺連接互聯網的機器上,并將它創建的本地存儲庫移動到需要它的系統上。
添加回答
舉報
0/150
提交
取消