AndroidX тестовый диалог - PullRequest
       70

AndroidX тестовый диалог

0 голосов
/ 22 февраля 2019

С момента выпуска AndroidX мы используем Robolectric с Espresso в наших модульных тестах.Но мы не можем найти способ протестировать диалоги.Сообщество эспрессо предлагает, чтобы мы сделали:

onView(withId(android.R.id.button1))
                .inRoot(isDialog())
                .check(matches(isDisplayed()))
                .perform(click())

Но тест здесь не удался, за исключением

Waited for the root of the view hierarchy to have window focus and not request layout for 10 seconds.

При отладке кода мы обнаружили, что диалог найден, но каким-то образом decorView.hasWindowFocus() возвращает false.

Из-за какой-то ошибки в Robolectric представление не может получить фокус окна?Есть ли способ решить это?В настоящий момент мы возвращаемся к теням Robolectric.

Мы используем Robolectric 4.2 и AndroidX test 1.1.0 версии

Обновление: Видимо, после показа диалога, активность сохраняет окнососредоточиться, так что это, скорее всего, ошибка Robolectric (или мое недоразумение).

1 Ответ

0 голосов
/ 01 марта 2019

У Robolectric есть метод для этого, это

ShadowAlertDialog.getLatestDialog()

Чтобы выполнить действие нажатия на кнопку ОК, вы можете использовать его следующим образом:

((AlertDialog) ShadowAlertDialog.getLatestDialog())
        .getButton(AlertDialog.BUTTON_POSITIVE).performClick();
...