Подтвердить что ты не робот

Исходный ресурс для тестирования Android

У меня есть следующая структура папок в Android Studio:

├── androidTest
│   ├── java
│   └── res
│       └── raw
│           └── test_file
└── main
    ├── java
    └── res
        └── raw
            └── app_file

Я пытаюсь получить доступ к ресурсу test_file, который существует в исходной папке элементов androidTest. Здесь код внутри тестового примера Robotium, который наследуется от ActivityInstrumentationTestCase2:

InputStream is = this.getInstrumentation()
                 .getContext()
                 .getResources()
                 .openRawResource(R.raw.test_file);

Android Studio выдает ссылочную ошибку, так как ресурс не найден. Точная ошибка: "Не удается разрешить файл test_file".

Как я могу ссылаться на этот ресурс в тестовом случае, который существует в пакете ресурсов androidTest?

4b9b3361

Ответ 1

По умолчанию ваш проект androidTest будет включать ваш класс приложения R, но ресурсы androidTest будут сгенерированы в отдельный файл. Убедитесь, что вы импортировали R-класс из тестового проекта:

import com.your.package.test.R;

[..]

getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file);

Вы также можете напрямую ссылаться на тестовый проект класса R:

getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file);

Ответ 2

У меня были ресурсы androidTest в нужном месте (src/androidTest/res), и я все еще не мог получить к ним доступ через <normal.package>.test.R. Я потратил много времени на поиски в Google, пытаясь выяснить, что происходит.

Я НАКОНЕЦ наткнулся на ответ. Если вы создаете buildType, где вы указали applicationIdSuffix, ваши файлы находятся в <applicationId><applicationIdSuffix>.test.R!!!!

то есть.

applicationId "com.example.my.app"

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}

если у вас есть ресурсы androidTest в правом каталоге, вы можете получить к ним доступ только через com.example.my.app.debug.test.R!!!!