Reputation: 5926
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?
Upvotes: 14
Views: 5608
Reputation: 3537
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
!!!!
Upvotes: 13
Reputation: 5926
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;
Upvotes: 19