Assets folder in Android Studio Unit Test

那年仲夏 提交于 2019-11-27 20:20:37

问题


I have a Gradle project with the following structure:

project/
    src/
        androidTest/
            java/
        main/
            java/
            res/
            AndroidManifest.xml
    build.gradle

Now I want to add a unit test which uses a resource (either "raw" or "asset").

I put my resource into project/androidTest/assets/test_file and access it with getContext().getResources().getAssets().open("test_file"); (in an AndroidTestCase).

However, this gives me a FileNotFoundException. How can I fix this?


回答1:


It looks like you're trying to create an instrumented unit test, since you want to create it in the androidTest folder.

You can use one of these two lines in your test to get the context:

  • Context ctx = InstrumentationRegistry.getTargetContext(); this one will give you your app's context. You can use it to grab assets that are in src/main/assets for example.

  • Context ctx = InstrumentationRegistry.getContext(); this one will give you the test app's context. You can use it to grab assets that are in src/androidTest/assets

If you want to know more about assets in unit testing you can read this post. In this github file you have an example.




回答2:


I think you use the wrong context ( the application-context and not the instrumentation context ) use:

getInstrumentation().getContext();

Or see here where I exactly do what you want to do: https://github.com/ligi/gobandroid/blob/master/android/src/androidTest/java/org/ligi/gobandroidhd/base/AssetAwareInstrumentationTestCase.java



来源:https://stackoverflow.com/questions/24601053/assets-folder-in-android-studio-unit-test

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