我一直在尝试在gradle项目中配置spock。因此,通过以下配置,它可以解决。
申请插件:'groovy'
我的测试用例位于src/test/groovy
文件夹中。这很好。我可以运行测试用例。
但是,我想将集成测试分成单独的文件夹结构 - src/itest/groovy
。
为此我添加了以下内容:
sourceSets {
itest {
srcDir file('src/itest/groovy')
}
resourceDir ..
compileClassPath ..
}
configurations {
itestCompile.extendsfrom testCompile
}
由于组织限制,我无法复制整个代码。但我确实试过了我可以在网上得到的所有变种而且它没有用!!
我总是得到错误:
The task compileItestGroovy was not found in the project.
我做了一些研究,默认情况下,这个任务是由groovy插件添加的。仍然没有找到任务,我的构建陷入了困境。如果你能帮我解决这个问题会很棒。
P.S该项目还有其他插件,如java,源代码在java中。
运行命令 - ./gradlew clean build
Gradle版本 - 2.2.1
我尝试使用gradle版本3.5在家用电脑上进行类似的设置,并且工作正常。
答案 0 :(得分:1)
给出以下build.gradle
文件:
apply plugin: 'groovy'
repositories {
jcenter()
}
sourceSets {
integration {
groovy {
compileClasspath += main.output
runtimeClasspath += main.output
srcDirs = ['src/integration/groovy']
}
resources.srcDir file('src/integration/resources')
}
}
configurations {
// By default, integration tests have the same dependencies as standard tests
integrationCompile.extendsFrom testCompile
integrationRuntime.extendsFrom testRuntime
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.12'
testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
// This is only available for the integration tests
integrationCompile 'com.github.ben-manes.caffeine:caffeine:2.5.5'
}
tasks.create('integrationTest', Test) {
dependsOn 'compileIntegrationGroovy'
group = 'Verification'
description = 'Runs the integration tests'
// GRADLE 2.2
testClassesDir = sourceSets.integration.output.classesDir
// GRADLE 3.5
// testClassesDirs = sourceSets.integration.output.classesDirs
classpath = sourceSets.integration.runtimeClasspath
}
tasks.findByName('check').dependsOn 'integrationTest'
您应该能够在src/integration/groovy
内部进行集成测试,而./gradlew check
将运行标准测试和集成测试