Groovy Spock-未收到测试事件,“;“无来源”;

Groovy Spock-未收到测试事件,“;“无来源”;,groovy,spock,Groovy,Spock,尝试在IDE中运行基本Spock测试时,我收到错误“未接收测试事件”。问题似乎是由于:测试无源代码造成的。我错过了什么 渐变输出: C:\Users\pc\IdeaProjects\schema-test>gradlew :cleanTest :test --tests com.scarlatti.SpockTest :cleanTest UP-TO-DATE :compileJava NO-SOURCE :processResources :classes :compileTestJav

尝试在IDE中运行基本Spock测试时,我收到错误“未接收测试事件”。问题似乎是由于
:测试无源代码造成的。我错过了什么

渐变输出:

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'
}
简单斯波克试验:

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

问题在于
build.gradle
文件中

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

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

解决方案:

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

groovy-all
依赖项不必显式添加-添加
spock-core
就足够了,将自动添加有效的
groovy all
。我得到org.gradle.api.GradleException:无法推断groovy类路径,因为在类路径:配置:compileClasspath“上找不到groovy Jar,但不包括显式groovy依赖项。