慕的地8271018
2023-04-13 14:16:29
我的堆棧:理念2019.1.3彈簧啟動 2.1.6Java 11行家 3.8.0常規 2.5斯波克 1.3Junit 木星 5.5.1Junit 復古 5.5.1GMavenPlus 插件 2.7.1我們想開始在 Spock 測試框架中編寫測試。我遵循了這個 howto,但我沒有成功。當我嘗試運行我的所有測試時,我的 spock 測試沒有運行。我能夠進行一項測試。我可以“右鍵單擊”測試并運行它。但是,如果我嘗試運行整個 groovy 包(或 Java 包下的某些包),它將不會運行那些 groovy 測試。它不會運行意味著以下錯誤:Jul 24, 2019 8:33:47 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowableWARNING: TestEngine with ID 'junit-jupiter' failed to discover testsjava.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/SelectorResolver at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69) at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168) at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) ... 8 more有人可以解釋為什么可能嗎?斯波克測試:class TelephoneTest extends Specification { def "Should copy correct values from telephone buidler."() { given: TelephoneInfoType telephone = telephone().build().toOurType() expect: telephone.getCountry() == COUNTRY telephone.getNumber() == NUMBER telephone.getType() == TYPE telephone.getLocation() == LOCATION }}我的文件夾結構:src/main/javasrc/test/groovysrc/test/java我想查看正在運行的測試,這意味著:我可以右鍵單擊文件夾src/test/groovy并選擇運行測試。
1 回答

肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
這是我在 IDEA 中看到的:
所以也許你想更具體一些并在 GitHub 上分享一個MCVE,即一個完整的 Maven 項目,其中包含一些虛擬類和測試(Spock 和 JUnit),供我檢查。
更新:在我的叉子中檢查并修復你的 MCVE 之后,我可以解釋哪里出了問題:
您用于 Spock 測試的 MCVE 文件夾是“src/test/spock”。我將它重命名為“src/test/groovy”,以便 GMavenPlus 能夠找到它。這修復了 Groovy 測試編譯。
在您的 POM 中,您手動覆蓋了三個 JUnit Jupiter 工件的依賴版本,但向
mvn help:effective-pom
我展示了一些其他工件仍在 5.3.2 上,而您的版本是 5.5.1。我不確定為什么你認為你需要更新它們而不是希望成為最前沿的并始終使用最新版本。無論如何,有效的 POM 還表明在您的父 POM 中有這些與 JUnit 相關的版本屬性:
<junit-jupiter.version>5.3.2</junit-jupiter.version> <junit.version>4.12</junit.version>
更確切地說,這些屬性來自您的父 POM自己的父 POM。剩下的很簡單:只需覆蓋您自己的 POM 中的相關屬性即可:
<properties> ??<junit-jupiter.version>5.5.1</junit-jupiter.version> ??</properties>
現在運行mvn clean test
并看到正在編譯和運行 JUnit 和 Spock 測試。從上面的屏幕截圖中的 IntelliJ IDEA 運行測試現在也可以使用。
添加回答
舉報
0/150
提交
取消