Spock - 未收到测试事件,“NO-SOURCE”

时间:2017-11-04 19:02:52

标签: groovy spock

尝试在IDE中运行基本Spock测试时出现错误"test events not received"。问题似乎是:test NO-SOURCE引起的。我错过了什么?

Gradle输出:

C:\Users\pc\IdeaProjects\schema-test>gradlew :cleanTest :test --tests com.scarlatti.SpockTest
:cleanTest UP-TO-DATE
:compileJava NO-SOURCE
:processResources
:classes
:compileTestJava NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE

BUILD SUCCESSFUL

项目结构:

src
├───main
│   └───groovy
│      └───com
│          └───scarlatti
│               └───App.java
└───test
    └───groovy
        └───com
            └───scarlatti
                    SpockTest.groovy

的build.gradle:

apply plugin: 'java'
apply plugin: 'idea'

repositories {
    mavenCentral()
}


dependencies {
    testCompile 'org.spockframework:spock-core:1.1-groovy-2.4'
    testCompile 'cglib:cglib-nodep:2.2'
}

简单的Spock测试:

class SpockTest extends Specification {
    @Test
    "test that a spock test will run"() {
        when:
            println "running spock test..."
        then:
            notThrown(Exception)
    }
}

1 个答案:

答案 0 :(得分:1)

问题在于您的build.gradle文件。

从输出中注意到Gradle只运行任务:compileJava,而不是:compileGroovy

Spock测试类是用Groovy编写的,因此除非你告诉Gradle在构建时运行任务com.scarlatti.SpockTest,否则不会构建类:compileGroovy

解决方案:

  • apply plugin: 'groovy'中添加build.gradle。这会将:compileGroovy任务附加到Gradle的:test任务图。
  • 在编译依赖项中包含org.codehaus.groovy:groovy-all:2.4.x jar。这允许Gradle编译Groovy代码。将groovy的版本与您正在使用的Spock版本相匹配。