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

Include jar to integration tests using gradle

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

它位于我的 "lib" 文件夹中,因此我添加了 integrationTestCompile 的依赖项,但是当我在集成测试中使用 jar 中包含的任何 class 时,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 插件添加的标准配置。这是插件添加的内容:

(Learn more about gradle java plugin here)

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

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

configurations{
    integrationTest
}

但您仍然需要通过执行以下操作将所有 integrationTestCompile 依赖项添加到 testCompile:

testCompile.extendsFrom(integrationTestCompile)