Папка 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

Другие вопросы по тегам