Ресурс холостого хода эспрессо не работает, если в onCreate Активности запущено долго выполняемое задание?

Как использовать ресурс эспрессо на холостом ходу, если в onCreate Активности запущена длительно выполняемая задача?

Я создал собственный IdlingResource, и он работает нормально, если длинный асинхронный вызов метода запускается событием click, но прерывается всякий раз, когда он вызывается в методе Acitivty onCreate.

Пример:

public void onBtnClick(){
    setIdle(true); // This works fine, our tests wait until setIdle(false) is called
    doSomeBackgroundTask(); 
}

public void onDone(){
    setResourceIdle(false);
    setIdle(false);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setIdle(true); // This doesn't work, our tests won't wait
    doSomeBackgroundTask(); 
}

Есть идеи, чтобы преодолеть эту ситуацию?

1 ответ

Попробуйте зарегистрировать ваш idlingResource перед активацией onCreate.

просто @Before Метод должен быть достаточно.

Вы также можете реализовать свой собственный ActivityRule и переопределить beforeActivityLaunched() метод, если вы используете эспрессо-правила

Или, если вы хотите выполнить какой-либо код перед созданием приложения, вам нужно реализовать собственный тестовый прогон и переопределить callApplicationOnCreate()

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