我想在集成测试中包含一个外部.jar。

它位于我的“lib”文件夹中,因此我为IntegrationTestCompile添加了依赖项,但是当我在集成测试中使用jar中包含的任何类时,Eclipse会抱怨。

这是我的build.gradle的示例:

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

task iTest(type: Test) {
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath += sourceSets.integrationTest.runtimeClasspath
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    //Unit test dependencies
    testCompile 'org.mockito:mockito-core:1.+'
    testCompile 'junit:junit:4.12'

    //Integration test dependencies
    integrationTestCompile fileTree(dir: 'libs', include: ['*.jar'])
}

任何想法,将不胜感激。

最佳答案

integrationTest不是Java插件添加的标准配置。插件确实添加了以下内容:

java - 使用gradle将jar包含到集成测试中-LMLPHP

(Learn more about gradle java plugin here)

因此,除非您定义了自己的名为IntegrationTest的配置,否则应仅将集成测试依赖项添加到testCompile中。

或者,您可以添加自己的配置:

configurations{
    integrationTest
}

但是您仍然必须通过执行以下操作将所有IntegrationTestCompile依赖项添加到testCompile:
testCompile.extendsFrom(integrationTestCompile)

09-29 22:53