I would like to add layout xml files into my androidTest
folder to be used only for testing.
I added res/layout
folder to androidTest
and tried to add a layout file to it. But it gives error URI is not registered
for xmlns:android="http://schemas.android.com/apk/res/android"
Somehow the project does not recognize it as valid layout file.
It is tricky to add xml resources to
androidTest
.Android Instrumentation tests create another APK to run the tests against your original application. Although you can access your
Context
and objects from your main application, you cannot modify the generated APK file of your app.That means you cannot put additional layout xml to your original application from tests that are in the
androidTest
folder.Solution:
Alternatively,
buildType
calledespresso
.espresso
folder where you can put any java or Android resource you want to add.AndroidManifest
there.testBuildType 'espresso'
Your
build.gradle
should look like this:When you run your espresso tests around that flavor, you will have an access to additional layout xml files you added.
Should look like this:
That's easy! In general, you should just put your resources under the
src/androidTest/res
folder. And that is! Then you can use it in yoursrc/androidTest/java
files. Yes, you can't use test layouts in your production APK, but you can use your test layouts in your test APK.There're some problems that might confuse you. For instance autocompletion works well not so very often, but, anyway, it builds and works.
Recently I wrote custom control for masked EditText so I don't want to put any activity into the library, but I do want to have an activity to check the view and I do want inflate it from XML. You can see the whole code on the github page, here're some key moments:
So you can see, that under androidTest there's some kind of a separate project with its own manifest that registers Activity and so on :-) I would share more files, but it's just a project, no more and you always can look up the link.
The only thing that I'd like to warn you, that you should be ready that Android Studio will show you that your project contains errors even if that's not true :-) Good luck!