我想要包含仅用于测试的资源。
我的app模块build.gradle文件中包含以下内容:
android {
...
sourceSets {
androidTest {
java.srcDirs = ['src/androidTest/java']
res.srcDirs = ['src/androidTest/res']
}
}
}
java srcDirs路径是正确的,但如果我尝试从androidTest中的res目录获取资源,则无法找到资源。
如何在androidTest目录中拥有仅包含在测试中的资源?
答案 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
!!!!