猿问

Spock 测试与 junit 5 测试一起不运行

我的堆栈:

  • 理念2019.1.3

  • 弹簧启动 2.1.6

  • Java 11

  • 行家 3.8.0

  • 常规 2.5

  • 斯波克 1.3

  • Junit 木星 5.5.1

  • Junit 复古 5.5.1

  • GMavenPlus 插件 2.7.1

我们想开始在 Spock 测试框架中编写测试。我遵循了这个 howto,但我没有成功。当我尝试运行我的所有测试时,我的 spock 测试没有运行。

我能够进行一项测试。我可以“右键单击”测试并运行它。但是,如果我尝试运行整个 groovy 包(或 Java 包下的某些包),它将不会运行那些 groovy 测试。它不会运行意味着以下错误:

Jul 24, 2019 8:33:47 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowable

WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests

java.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/java

src/test/groovy

src/test/java

我想查看正在运行的测试,这意味着:我可以右键单击文件夹src/test/groovy并选择运行测试。


慕的地8271018
浏览 177回答 1
1回答

肥皂起泡泡

这是我在 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 运行测试现在也可以使用。
随时随地看视频慕课网APP

相关分类

Java
我要回答