Кто-нибудь знает, как получить контекст проекта Test в тестовом примере Android junit (расширяет AndroidTestCase).
Примечание. Тест НЕ ЯВЛЯЕТСЯ инструментальным.
Примечание 2. Мне нужен контекст тестового проекта, а не контекст реального тестируемого приложения.
Мне это нужно, чтобы загрузить некоторые файлы из ресурсов из тестового проекта.
Ответы:
Есть новый подход с библиотекой поддержки тестирования Android (в настоящее время
androidx.test:runner:1.1.1
). Обновленный пример Котлина:Если вы хотите также запустить контекст приложения:
Полный рабочий пример: https://github.com/fada21/AndroidTestContextExample
Посмотрите здесь: в чем разница между getTargetContext () и getContext (в InstrumentationRegistry)?
источник
compile "com.android.support.test:runner:1.0.1"
в свой градлInstrumentationRegistry.getInstrumentation().context
вместо него.После некоторых исследований кажется, что единственное рабочее решение - это то, на которое уже указывал Йорк. Вам нужно будет расширить InstrumentationTestCase, а затем вы сможете получить доступ к контексту вашего тестового приложения с помощью getInstrumentation (). GetContext () - вот краткий фрагмент кода с использованием приведенных выше предложений:
источник
Как вы можете прочитать в исходном коде AndroidTestCase ,
getTestContext()
метод скрыт.Вы можете обойти
@hide
аннотацию, используя отражение.Просто добавьте следующий метод в свой
AndroidTestCase
:Тогда звоните в
getTestContext()
любое время, когда захотите. :)источник
java.lang.NoSuchMethodException: android.test.ServiceTestCase.getTestContext()
Обновление:
AndroidTestCase
этот класс устарел на уровне API 24. ИспользуйтеInstrumentationRegistry
вместо него. Новые тесты следует писать с использованием библиотеки поддержки тестирования Android. Ссылка на объявлениеВы должны расширять AndroidTestCase вместо TestCase.
Обзор класса AndroidTestCase
Расширьте это, если вам нужен доступ к ресурсам или другим вещам, которые зависят от контекста активности.
AndroidTestCase - Разработчики Android
источник
Если вы хотите получить контекст с помощью Kotlin и Mockito, вы можете сделать это следующим образом:
Надеюсь, это поможет тебе
источник
Это правильный способ получения контекста. Другие методы уже устарели
источник
источник
Тем, кто сталкивается с этими проблемами при создании автоматических тестов, необходимо сделать следующее:
источник
Остальные ответы устарели. Прямо сейчас каждый раз, когда вы расширяете AndroidTestCase, существует объект mContext Context, который вы можете использовать.
источник