Setting a custom assets directory for unit testing in Android Studio

I've stumbled upon an answer for my own question, for which I scored the coveted "Tumbleweed" award reserved for questions that inspire a particularly notable lack of interest. Never-the-less it may prove useful to someone.

In the end I'm going to describe this as a bug in Android's gradle build but in the absence of any conclusive documentation that's going to have to remain an opinion.

It would appear that "androidTest/assets" just doesn't work. However "debug/assets" does. So does "debug/java" incidentally so the solution is to put any and all testing resources and code into the debug root, with the exception of the unit tests themselves.

I also added the following modifications to my build.gradle:

    androidTest {
        assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/']
        java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java']
    }

And now I have functioning unit tests employing assets and mocks that are unknown to the release build.


I am using Android Studio 1.3 + Gradle 1.2.3 and src/androidTest/assets didn't work for me. I placed everything in src/debug without any changes to build.gradle and it worked. Android seemingly picks up up items from the debug folder automatically while building the apk.


I don't know how it was before, but I was able to create Android instrumented unit tests where I can read test assets or production assets. See this answer for more info.