尝试在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)
}
}
答案 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版本相匹配。