ActivityTestRule - как вызвать код перед приложением onCreate - программирование

ActivityTestRule - как вызвать код перед приложением onCreate

Я использую Espresso 2.1 с ActivityTestRule, и я ищу способ установить некоторые статические флаги до onCreate() в моем приложении.

У меня есть код инициализации, который я не хочу вызывать во время контрольных тестов.

4b9b3361

Ответ 1

Приложение onCreate() вызывается после Instrumentation onCreate(). Для этого случая вам нужно реализовать пользовательский тестовый бегун, который будет подклассифицировать AndroidJUnitRunner и переопределит callApplicationOnCreate() с вашей настраиваемой настройкой.

public class MyCustomTestRunner extends AndroidJUnitRunner {
@Override
public void callApplicationOnCreate(Application app) {
    InstrumentationRegistry.getTargetContext().getSharedPreferences().doMyStuff();
    super.callApplicationOnCreate(app);
}
}

Обязательно обновите файл defaultConfig в файле build.gradle, чтобы использовать новый testInstrumentationRunner следующим образом:

testInstrumentationRunner "com.myapp.MyCustomTestRunner"

Если вы хотите запустить код до Activity onCreate(), подкласс ActivityTestRule с вашей собственной реализацией beforeActivityLaunched()