为androidTest sourceSet配置res srcDirs

Mat*_*gan 12 java android android-testing build.gradle

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

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

android {

    ...

    sourceSets {
        androidTest {
            java.srcDirs = ['src/androidTest/java']
            res.srcDirs = ['src/androidTest/res']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*gan 16

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

诀窍是自动生成的R.java文件对于资源不同androidTest.

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

import com.mycompany.myappname.R;
Run Code Online (Sandbox Code Playgroud)

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

import com.mycompany.myappname.test.R;
Run Code Online (Sandbox Code Playgroud)

  • 也适用于我,但仅适用于InstrumentationTestCase.如果在AndroidTestCase中使用它,资源ID不一样,我得到一个随机的PNG图像,而不是我请求的XML文件. (4认同)

jos*_*ick 11

如果你有一个你设置的构建类型applicationIdSuffix,你的src/androidTest/res资源将是<applicationId><applicationIdSuffix>.test.R!!!!! 非常重要 !!!

applicationId "com.example.my.app"

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}
Run Code Online (Sandbox Code Playgroud)

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