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