ActivityTestRule - как вызвать код перед созданием приложения в onCreate
Я использую Espresso 2.1 с ActivityTestRule, и я ищу способ установить статические флаги перед onCreate()
в моем приложении будет называться.
У меня есть код инициализации, который я не хочу вызывать во время тестирования приборов.
2 ответа
заявка onCreate()
называется после приборостроения 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()
Я решил эту проблему в Kotlin, добавив это в свой тестовый метод:
val scenario = ActivityScenario.launch(MyActivity::class.java)
Затем добавьте / обновите свои переменные перед этим вызовом или в своем
@Before
метод.