无法在单独的sourceSet中配置gradle中的Spock测试

时间:2017-09-14 16:02:58

标签: gradle groovy spock

我一直在尝试在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在家用电脑上进行类似的设置,并且工作正常。

1 个答案:

答案 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将运行标准测试和集成测试