在基于Android Gradle的项目中设置集成测试

时间:2015-11-17 07:21:53

标签: android gradle

我正在关注this教程,将集成测试环境添加到我的Android项目中。 我创建了src/integrationTest/javasrc/integrationTest/resources dirs,然后我将其添加到我的build.gradle

sourceSets {
    integrationTest {
        java {
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
            srcDir file('src/integrationTest/java')
        }
        resources.srcDir file('src/integrationTest/resources')
    }
}

但是当我同步Gradle文件时,我收到此错误:

  

错误:(134,0)没有这样的属性:主要用于类:   org.gradle.api.internal.file.DefaultSourceDirectorySet可能   解决方案:名称

这意味着什么?我该如何解决?

由于

修改

我刚刚尝试使用android.sourceSets.main.outputandroid.sourceSets.test.output代替main.outputtest.output

sourceSets {
    integrationTest {
        java {
            compileClasspath += android.sourceSets.main.output + android.sourceSets.test.output
            runtimeClasspath += android.sourceSets.main.output + android.sourceSets.test.output
            srcDir file('src/integrationTest/java')
        }
        resources.srcDir file('src/integrationTest/resources')
    }
}

现在我收到了这个错误:

  

错误:(136,0)在源集main上找不到属性'output'。

1 个答案:

答案 0 :(得分:6)

解决!实际上,这些行不必在源集配置中,而是在运行集成测试的任务中。现在,我的build.gradle看起来像:

    sourceSets {
        integrationTest {
            java.srcDir file('src/integrationTest/java')
            resources.srcDir file('src/integrationTest/resources')
        }
    }

    configurations {
        integrationTestCompile.extendsFrom testCompile
    }

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