我的堆栈:理念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
提交
取消