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

无法在单独的源集中配置gradle中的Spock测试,gradle,groovy,spock,Gradle,Groovy,Spock,我一直在尝试在gradle项目中配置spock。因此,通过下面的配置,它可以工作 应用插件:“groovy” 我的测试用例位于文件夹src/test/groovy中。这很好。我能够运行测试用例 但是,我想将集成测试分离到一个单独的文件夹结构中-src/itest/groovy 为此,我添加了以下内容: sourceSets { itest { srcDir file('src/itest/groovy') } resourceDir .. compileClassPat

我一直在尝试在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插件默认添加的。仍然找不到任务,我的构建也处于不确定状态。如果你能帮我解决这个问题就太好了

这个项目还有其他插件,比如java,因为源代码是用java编写的

运行命令-./gradlew clean build

渐变版本-2.2.1


我用gradle 3.5版在我的家用电脑上尝试了类似的设置,效果很好

给定以下
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
将运行这两个标准测试,并且集成测试应该已经工作了。不过我也有同样的例外。我的项目使用Gradle2.2.1。不确定是否有什么事情是因为这个。我在3.5版中使用了类似的设置,效果很好。但是在这里,同样的例外,你为什么不在问题中提到这一点?你甚至不说你的例外是什么。你甚至没有说清楚你正在运行什么来获得神秘异常…@user3276247 Ok。我在2.2.1中尝试了上述方法,并对底部的测试任务进行了调整。。。祈祷