为androidTest sourceSet配置res srcDirs

时间:2014-10-30 21:21:13

标签: java android android-testing build.gradle

我想要包含仅用于测试的资源。

我的app模块build.gradle文件中包含以下内容:

android {

    ...

    sourceSets {
        androidTest {
            java.srcDirs = ['src/androidTest/java']
            res.srcDirs = ['src/androidTest/res']
        }
    }
}

java srcDirs路径是正确的,但如果我尝试从androidTest中的res目录获取资源,则无法找到资源。

如何在androidTest目录中拥有仅包含在测试中的资源?

2 个答案:

答案 0 :(得分:16)

事实证明,您无需更改默认的build.gradle文件中的任何内容。

诀窍是自动生成的R.java文件与androidTest中的资源不同。

如果主要源集中某处的R的import语句如下:

import com.mycompany.myappname.R;

测试文件中R的import语句应如下所示:

import com.mycompany.myappname.test.R;

答案 1 :(得分:11)

如果您的构建类型已设置applicationIdSuffix,那么您的src/androidTest/res资源将位于<applicationId><applicationIdSuffix>.test.R !!!!! 非常重要 !!!

applicationId "com.example.my.app"

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}

src/androidTest/res中有一些资源?他们不在com.example.my.app.test!如果您正在运行调试版本,他们会在com.example.my.app.debug.test.R !!!!