Intereting Posts
Время, затраченное на первый запуск с AS 2.0 и gradle 2.0 Android. Где мы должны сохранять имя пользователя и пароль в памяти устройства? Как вернуться к стилю по умолчанию в EditText, если применить фон? Как отправить намерение с помощью телеграммы Android Динамически загружает Listview в конец прокрутки? Android Gradle заменить имя пакета для значения в манифесте Доступ из браузера в камеру Ошибка компиляции Android Hello-World: Intellij не может найти aapt Что такое ScaleType по умолчанию для ImageView? Приложение Android Wear не устанавливается через трубку Как использовать намерение выбора файлового браузера для выбора файла Каковы действительные возвращаемые значения для интерфейса Javascript в Android WebView? Найдите и замените студию Android EditText теряет фокус при появлении клавиатуры; Требует двойного нажатия для редактирования Как использовать аппаратное ускорение декодирования видео на Android?

Исходный ресурс для тестирования 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?

Solutions Collecting From Web of "Исходный ресурс для тестирования Android"

По умолчанию ваш проект 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); 

У меня были ресурсы 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 !!!!