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 in androidTest
.
If the import statement for R
somewhere in your main source set looks like:
import com.mycompany.myappname.R;
the import statement for R
in a test file should look like:
import com.mycompany.myappname.test.R;
If you have a build type where you've set the applicationIdSuffix
, your src/androidTest/res
resources are going to be at <applicationId><applicationIdSuffix>.test.R
!!!!! VERY IMPORTANT!!!
i.e.
applicationId "com.example.my.app"
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
have some resources in src/androidTest/res
? They're NOT at com.example.my.app.test
! If you're running the debug build, they're at com.example.my.app.debug.test.R
!!!!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With