Build Gradle不下载自定义源集中定义的测试的依赖项

Build Gradle不下载自定义源集中定义的测试的依赖项,build,gradle,build-automation,dependency-management,cucumber-junit,Build,Gradle,Build Automation,Dependency Management,Cucumber Junit,我有以下项目结构: MyProject --src --test --acceptance --java --resources --unit 下面的build.gradle apply plugin: 'java' apply plugin: 'idea' version = '0.1' repositories { mavenCentral() } sourceSets { main {

我有以下项目结构:

MyProject
   --src
   --test
      --acceptance
         --java
         --resources
      --unit
下面的build.gradle

apply plugin: 'java'
apply plugin: 'idea'

version = '0.1'

repositories {
    mavenCentral()
}

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
    unit {
        java {
            srcDir 'test/unit'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
    acceptance {
        java {
            srcDir 'test/acceptance/java'
        }
        resources {
            srcDir 'test/acceptance/resources'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

dependencies {
    compile fileTree(dir: 'lib', include: '*.jar')

    unitCompile group: 'junit', name: 'junit', version: '4.11'

    acceptanceCompile group: 'junit', name: 'junit', version: '4.11'
    acceptanceCompile group: 'info.cukes', name: 'cucumber-junit', version: '1.1.3'
    acceptanceCompile group: 'info.cukes', name: 'cucumber-java', version: '1.1.3'
}


task unitTest(type: Test) {
    description = "Runs Unit Tests"
    classpath += sourceSets.unit.runtimeClasspath
    testClassesDir = sourceSets.unit.output.classesDir
}


task acceptanceTest(type: Test) {
    description = "Runs Acceptance Tests"
    classpath += sourceSets.acceptance.runtimeClasspath
    testClassesDir = sourceSets.acceptance.output.classesDir
}
但是运行“gradle acceptanceTest”会导致编译问题,因为在类路径上似乎找不到依赖项

srcDir 'path/to/src/dir'
正在添加一个附加目录,而不是替换默认位置

改用

srcDrs = ['path/to/src/dir']
这应该能奏效

干杯,
rene

看起来在版本1.1.3中,Cucumber类在包中

cucumber.api.junit
而不是

cucumber.junit
更改import语句似乎至少解决了类路径问题

但是,通过gradle运行Cucumber JUnit测试存在一些问题。这里提供了更多信息和使用javaexec任务的解决方法:。总之,完成以下任务:

  task cucumber() {
    dependsOn assemble, compileAcceptanceJava
    doLast {
        javaexec {
            main = "cucumber.api.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output +
                    sourceSets.acceptance.output + sourceSets.unit.runtimeClasspath +
                    sourceSets.acceptance.runtimeClasspath

            args = ['-f', 'junit:build/reports/test-results/cucumber.xml',
                    '-f', 'html:build/reports/test/cucumber-tests.html',
                    '--glue', 'com.paragon', 'test/acceptance/features']
        }
    }
}
我们现在可以跑步了

gradle cucumber

并生成JUnit报告。

感谢您的响应-我已尝试将源集更改为使用srcDirs=[…],但不幸的是,在运行acceptanceTests目标时仍然出现相同的错误。“package cucumber.JUnit不存在导入cumber.JUnit.cumber;”似乎表明类路径存在问题。在构建文件的这一部分中,我的语法有什么问题吗?