Android: как получить контекст при тестировании с помощью ActivityInstrumentationTestCase2?

#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();