У меня есть тестовый случай Espresso, где я проверяю для с первой строки, отображается ли диалоговое окно или нетКак избежать проблем с асинхронной работой в эспрессо?
onView(withText(R.string.dialog_title)).check(matches(isDisplayed()));
и их я выполнить щелчок на кнопке, чтобы закрыть диалоговое окно:
onView(withText(R.string.negative_button)).perform(click());
Дело в том, что операция клика всегда выполняется перед проверкой, так как обе операции выполняются асинхронно. Как избежать этой проблемы и сохранить порядок выполняемых строк, как это написано в тестовом примере, когда мне не нужно выполнять операции асинхронно?
Я никогда не видел случая, когда операции onView выполняются асинхронно. «Проверьте свои предпосылки, попытайтесь выполнить другое действие или поместите полный код, но espresso не так быстро асинхронно. – satyajit
@satyajit Если бы вы взглянули на реализацию проверки и выполнения методов, вы увидите, что эти методы поставлены в очередь для выполнения асинхронным способом. – karate
https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html «По умолчанию Espresso ждет событий пользовательского интерфейса в текущей очереди сообщений, которые будут обрабатываться, и по умолчанию AsyncTasks для завершения, прежде чем он перейдет к следующей тестовой операции ». Таким образом, тестовые операции выполняются несинхронно. Мой совет: выполните тест в режиме отладки с некоторыми точками останова и проверьте, что происходит с вашим тестом. – jeprubio