Using assets in robolectric tests

怎甘沉沦 提交于 2019-12-18 18:58:12

问题


In my robolectric tests I am trying to read a file. Since this file contains just the test data I have put it in assets of the tests.

The directory structure looks like this.
src/main/assets/prod_data_file
src/test/assets/test_data_file

However when I try to read the file by getShadowApplication().getAssets().open(MY_FILE_PATH) it gives me FileNotFoundException.

Does anybody know how to fix this?


回答1:


Since my tests are just reading these files and returning file data as a String I was able to do that via getClass().getClassLoader().getResourceAsStream(MY_FILE_PATH) and then read file. Dont really need to read to use getShadowApplication().getAssets().open(MY_FILE_PATH).

I just moved my test data files to src/test/resources and it worked. :)




回答2:


I was able to make it like this:

1) Copy (or create) AndroidManifest.xml in test folder

2) Add @Config(emulateSdk = 18, manifest = "src/test/AndroidManifest.xml") for this specific test

I was able to read file. So it means you could play with AndroidManifest class and custom runner (more inspiration here https://groups.google.com/forum/#!topic/robolectric/YvbdqRFcdnA)

I think it could be also possible to play with build.gradle:

android {
  sourceSets {
    androidTest.setRoot( 'src/test' )

    androidTest {
      assets.srcDir file( 'src/test/assets' )
    }
  }
}

but I'm not sure since plugin doesn't create any build variant but just tasks.



来源:https://stackoverflow.com/questions/24631428/using-assets-in-robolectric-tests

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!