在基于Android Gradle的项目中设置集成测试 [英] Setting up integration tests in Android Gradle-based project

查看:304
本文介绍了在基于Android Gradle的项目中设置集成测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遵循教程将集成测试env添加到我的Android项目中。
我创建了 src / integrationTest / java src / integrationTest / resources 目录,然后添加了这对我的 build.gradle

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

但是,当我同步Gradle文件时,出现以下错误:
$ b


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

这是什么意思?如何解决它?



谢谢

编辑



我刚刚尝试过使用 android.sourceSets.main.output android.sourceSets.test.output 代替 main.output test.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文件('src / integrationTest / resources')
}
}



<现在我得到这个错误:

lockquote

错误:(136,0)无法在source set main上找到属性'output'。



解决方案

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

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

配置{
integrationTestCompile.extendsFrom testCompile
}

任务integrationTest(类型:Test){
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}


I'm following this tutorial to add integration test env to my Android project. I have create src/integrationTest/java and src/integrationTest/resources dirs and then I have added this to my 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')
    }
}

But when I sync Gradle files I get this error:

Error:(134, 0) No such property: main for class: org.gradle.api.internal.file.DefaultSourceDirectorySet Possible solutions: name

What does it means? How can I solve it?

Thanks

EDIT

I have just tried with android.sourceSets.main.output and android.sourceSets.test.output instead of main.output and test.output, respectively:

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')
    }
}

And now I get this error:

Error:(136, 0) Could not find property 'output' on source set main.

解决方案

Solved! Actually, these lines don't have to be in source set config, but in the task that runs integration tests. Now, my build.gradle looks like:

    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
    }

这篇关于在基于Android Gradle的项目中设置集成测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆