How to access files from assets folder during unit tests execution? My project is build using Gradle, I use Robolectric to run tests. It seems like gradle is being recognizing t
Updating as for Roboelectric 3.1
@Test
public void shouldGetJSONFromAsset() throws Exception{
Assert.assertNotNull(RuntimeEnvironment.application); //Getting the application context
InputStream input = RuntimeEnvironment.application.getAssets().open("fileName.xml");// the file name in asset folder
Assert.assertNotNull(input);
}
See also
de Guide
If everything is correct, then you'll need something like this to read it:
public String readFileFromAssets(String fileName, Context context) throws IOException {
InputStreamReader stream = new InputStreamReader(context.getAssets().open(fileName));
Preconditions.checkNotNull(stream, "Stream is null");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
return IOUtils.toString(reader);
}
You need to pass Context for it to work.
Another thing to verify if you have configured assets in Gradle correctly? Here is just an example:
sourceSets {
main {
java.srcDirs = ['src/main']
// can be configured in different way
assets.srcDirs = ['src/androidTest/assets']
// other things, examples
res.srcDirs = ['res']
manifest.srcFile 'AndroidManifest.xml'
}
}