Android Эспрессо NoMatchingViewException на проверку

Я пробую новую библиотеку тестирования Android Espresso. Когда я пытаюсь:

onView(withId(R.id.gettingStarted))

тест работает нормально. Но когда я пытаюсь:

onView(withId(R.id.gettingStarted)).check(matches(isDisplayed()));

Я .NoMatchingViewException: No views in hierarchy found matching: with id: is <2131296645>

кто-нибудь видел что-нибудь подобное раньше? Мой первоначальный рефлекс заключается в том, что это просто ошибка, потому что эспрессо только на версии 1.0. Я использую Android Studio и точно следовал инструкциям по настройке.

3 ответов


это ожидаемое поведение.

onView(withId(R.id.gettingStarted)) само по себе ничего не делает. При вызове метода perform Espresso выполняет сопоставление, предоставленное внутри метода onView, с текущей иерархией представлений - если совпадающее представление не найдено, создается исключение.

Подробнее см. В руководстве по началу:https://google.github.io/android-testing-support-library/docs/espresso/index.html


существует много законных случаев, когда вы не можете определить R. id во время разработки теста. Например, конкретное представление может не иметь R. id или R. id не является уникальным. Это может сделать обычные тесты инструментирования хрупкими и сложными для записи, потому что обычный способ доступа к представлению (с findViewById()) не работает. Таким образом, вам может потребоваться получить доступ к закрытым членам действия или фрагменту, содержащему представление, или найти контейнер с известным R. id и перейти к его содержимому для особый вид.

дополнительная информация : https://code.google.com/p/android-test-kit/wiki/EspressoStartGuide


Это означает, что представление для этого идентификатора не найдено в полной иерархии дерева пользовательского интерфейса, независимо от того, является ли представление видимым или невидимым.