Configure res srcDirs for androidTest sourceSet

我想包括仅用于测试而编译的资源。

我的应用程序模块build.gradle文件中有以下内容:

android {

    ...

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

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

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


答案 1

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

诀窍在于,对于 中的资源,自动生成的文件是不同的。R.javaandroidTest

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

import com.mycompany.myappname.R;

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

import com.mycompany.myappname.test.R;

答案 2

如果您有一个已设置 的构建类型,则资源将处于!!!!!非常重要!!!applicationIdSuffixsrc/androidTest/res<applicationId><applicationIdSuffix>.test.R

applicationId "com.example.my.app"

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}

有一些资源 ?他们不在!如果运行的是调试版本,则它们处于!!!!src/androidTest/rescom.example.my.app.testcom.example.my.app.debug.test.R


推荐