【问题标题】:Spock tests failing with org.junit.runners.model.InvalidTestClassError:Spock 测试因 org.junit.runners.model.InvalidTestClassError 失败:
【发布时间】:2021-11-16 17:51:30
【问题描述】:

升级到 spock-core 2.0 后,我的测试失败并出现以下错误:

org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.spock.test.TestSpockSpecification':
  1. No runnable methods
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:525)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:102)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:84)
    at org.junit.runners.JUnit4.<init>(JUnit4.java:23)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
    at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125)
    at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111)

我在build.gradle 文件中使用以下配置:

testImplementation platform("org.spockframework:spock-bom:2.0-M5-groovy-3.0") //copied from spock example
testImplementation "org.spockframework:spock-core:2.0-M5-groovy-3.0"
implementation localGroovy() //3.0.7 as I am using gradle 7

我正在使用 junit 4 运行这些测试,有人可以帮忙

【问题讨论】:

    标签: gradle junit spock


    【解决方案1】:

    Spock 2.0 构建在 JUnit 5 之上,不适用于旧版 JUnit 4。此外,它已经发布了一段时间,没有理由使用里程碑。

    有关完整示例,请参阅 this。注意useJUnitPlatform 部分。例如:

    dependencies {
      testImplementation platform("org.codehaus.groovy:groovy-all:3.0.9")
      testImplementation platform("org.spockframework:spock-bom:2.0-groovy-3.0")
      testImplementation "org.spockframework:spock-core"
    
      testRuntimeOnly "net.bytebuddy:byte-buddy:1.11.18" // allows mocking of classes (in addition to interfaces)
      testRuntimeOnly "org.objenesis:objenesis:3.2"      // allows mocking of classes without default constructor (together with ByteBuddy or CGLIB)
    }
    
    test {
      useJUnitPlatform()
    }
    

    【讨论】:

    • 您好,我曾尝试使用 useJUnitPlatform(),但使用时它没有执行任何测试用例。我将它用于我的集成测试,如下所示。 integrationtest { useJUnitPlatform() } 除此之外,我还尝试过 includeEngines("spock") 并包含平台运行器依赖项,但没有一个选项对我有用。
    • @user14446456 你试过运行spock-example 项目吗?
    • 是的,我试过了,我可以成功运行它。
    • @user14446456,那么问题出在您的项目配置中。请在 GitHub 上发布完整的 MCVE,以使问题可重现。那么你可能很快就会得到正确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多