#android #unit-testing
#Android #модульное тестирование
Вопрос:
Я запускаю тест junit в Android, который расширяет ActivityInstrumentationTestCase2. Я использую это для того, чтобы запустить действие.
В activity используется подкласс объекта application для получения некоторых параметров. Я получаю объект приложения из контекста.
К сожалению, ActivityInstrumentationTestCase2 не предоставляет доступ к контексту. Есть ли способ получить доступ к контексту перед получением activity?
Ответ №1:
Вы можете получить контекст приложения из объекта instrumentation:
getInstrumentation().getTargetContext().getApplicationContext()
Комментарии:
1. Вау! Фантастический ответ.
Ответ №2:
Чтобы иметь возможность внедрять приложение с помощью setApplication(), вы должны использовать ActivityUnitTestCase, поскольку он доступен только в этом классе тестовых примеров.
По умолчанию ActivityUnitTestCase создает скрытый объект MockApplication, который используется в качестве тестируемого приложения.
Комментарии:
1. Спасибо — есть ли способ, которым я могу запустить действие, используя ActivityUnitTestCase?
2. startActivity [ developer.android.com/reference/android/app /…
3. ActivityUnitTestCase устарел, поскольку ссылка на уровень API 24
Ответ №3:
Для тех, кто использует
AndroidTestCase
и требуется подкласс app application:
MyApplication context = (MyApplication) getContext().getApplicationContext();