I'd like to include resources to be compiled only for testing.
I have the following in my app module build.gradle file:
android {
...
sourceSets {
androidTest {
java.srcDirs = ['src/androidTest/java']
res.srcDirs = ['src/androidTest/res']
}
}
}
The java srcDirs path is correct, yet if I try to get a resource from the res directory in androidTest, the resource can't be found.
How can I have resources in the androidTest directory that are only included for tests?
Turns out you don't need to change anything from the default build.gradle file.
The trick is that the auto-generated
R.java
file is different for resources inandroidTest
.If the import statement for
R
somewhere in your main source set looks like:the import statement for
R
in a test file should look like:If you have a build type where you've set the
applicationIdSuffix
, yoursrc/androidTest/res
resources are going to be at<applicationId><applicationIdSuffix>.test.R
!!!!! VERY IMPORTANT!!!i.e.
have some resources in
src/androidTest/res
? They're NOT atcom.example.my.app.test
! If you're running the debug build, they're atcom.example.my.app.debug.test.R
!!!!