【问题标题】:Setting up integration tests in Android Gradle-based project在基于 Android Gradle 的项目中设置集成测试
【发布时间】:2015-11-17 07:21:52
【问题描述】:

我正在关注this 教程,将集成测试环境添加到我的 Android 项目中。 我创建了src/integrationTest/javasrc/integrationTest/resources 目录,然后我将其添加到我的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 上找不到属性“输出”。

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    解决了!实际上,这些行不必在源集配置中,而是在运行集成测试的任务中。现在,我的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
        }
    

    【讨论】:

    • 使用integrationTest(group: 'verification', type: Test) 将任务与其他任务放在同一个组中。
    • 此解决方案为我解决了基本问题,但我使用的是 Android Studio 1.5.2,似乎集成不完整。 Android Studio 不会正确地为代码着色,也不会内联显示编译错误。 (你需要编译代码才能看到错误在哪里。)
    • 我发现当我尝试使用它时,应用程序类对测试类不可用。你有什么办法让它发挥作用吗?
    • 如果我在我的 Android 库模块中使用它,我会得到:Could not get unknown property 'integrationTest' for SourceSet container. 当我更改为 android.sourceSets.integrationTest 时,我会得到:Could not get unknown property 'output' for source set integration test of type com.android.build.gradle.internal.api.DefaultAndroidSourceSet.
    • @Hector 当我尝试这个时,我得到ERROR: The SourceSet 'integrationTest' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
    猜你喜欢
    • 2017-07-24
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2018-09-07
    • 2019-08-19
    相关资源
    最近更新 更多