Папка "Ресурсы" в Android Studio Unit Test
У меня есть проект Gradle со следующей структурой:
project/
src/
androidTest/
java/
main/
java/
res/
AndroidManifest.xml
build.gradle
Теперь я хочу добавить unit test, который использует ресурс (либо "raw", либо "asset" ).
Я поместил свой ресурс в project/androidTest/assets/test_file
и обратился к нему с помощью getContext().getResources().getAssets().open("test_file");
(в AndroidTestCase
).
Однако это дает мне FileNotFoundException
. Как я могу это исправить?
Ответы
Ответ 1
Похоже, вы пытаетесь создать инструмент unit test, так как вы хотите создать его в папке androidTest.
Вы можете использовать одну из этих двух строк в своем тесте, чтобы получить контекст:
-
Context ctx = InstrumentationRegistry.getTargetContext();
это даст вам ваш контекст приложения. Вы можете использовать его для захвата активов, находящихся в src/ основных/активах, например.
-
Context ctx = InstrumentationRegistry.getContext();
это даст вам контекст тестового приложения. Вы можете использовать его для захвата активов, находящихся в src/ androidTest/assets
Если вы хотите узнать больше об активах в модульном тестировании, вы можете прочитать сообщение this. В этом файле github у вас есть пример.
Ответ 2
Я думаю, что вы используете неправильный контекст (контекст приложения, а не контекст инструментария):
getInstrumentation().getContext();
Или посмотрите здесь, где я точно делаю то, что вы хотите сделать: https://github.com/ligi/gobandroid/blob/master/android/src/androidTest/java/org/ligi/gobandroidhd/base/AssetAwareInstrumentationTestCase.java