Как обсуждалось ранее, утверждение представления используется для подтверждения того, что как фактическое представление (найденное с использованием сопоставлений представлений), так и ожидаемые представления являются одинаковыми. Пример кода выглядит следующим образом:
onView(withId(R.id.my_view)) .check(matches(withText("Hello")))
Вот,
-
onView () возвращает объект ViewInstruction, соответствующий сопоставленному виду. ViewInteraction используется для взаимодействия с согласованным представлением.
-
withId (R.id.my_view) возвращает сопоставление представления, которое будет соответствовать представлению (фактическому), имеющему атрибуты id, равные my_view .
-
withText («Hello») также возвращает сопоставление представления, которое будет соответствовать представлению (ожидаемому), имеющему текстовые атрибуты, равные Hello .
-
check — это метод, который принимает аргумент типа ViewAssertion и делает утверждение, используя переданный в объекте ViewAssertion .
-
match (withText («Hello»)) возвращает утверждение представления, которое выполнит реальную работу по утверждению, что как фактическое представление (найденное с использованием withId ), так и ожидаемое представление (найденное с использованием withText ) — одно и то же.
onView () возвращает объект ViewInstruction, соответствующий сопоставленному виду. ViewInteraction используется для взаимодействия с согласованным представлением.
withId (R.id.my_view) возвращает сопоставление представления, которое будет соответствовать представлению (фактическому), имеющему атрибуты id, равные my_view .
withText («Hello») также возвращает сопоставление представления, которое будет соответствовать представлению (ожидаемому), имеющему текстовые атрибуты, равные Hello .
check — это метод, который принимает аргумент типа ViewAssertion и делает утверждение, используя переданный в объекте ViewAssertion .
match (withText («Hello»)) возвращает утверждение представления, которое выполнит реальную работу по утверждению, что как фактическое представление (найденное с использованием withId ), так и ожидаемое представление (найденное с использованием withText ) — одно и то же.
Давайте изучим некоторые методы, предоставляемые средой тестирования эспрессо для утверждения объектов представления.
не существует()
Возвращает утверждение представления, которое гарантирует, что сопоставитель представления не найдет подходящего представления.
onView(withText("Hello")) .check(doesNotExist());
Здесь тестовый пример гарантирует, что нет представления с текстом Hello.
Матчи()
Принимает целевое сопоставление представления и возвращает утверждение представления, которое гарантирует, что сопоставление представления (фактическое) существует и совпадает с представлением, сопоставленным сопоставителем представления цели.
onView(withId(R.id.textView_hello)) .check(matches(withText("Hello World!")));
Здесь тестовый пример гарантирует, что представление с идентификатором R.id.textView_hello существует и соответствует целевому представлению с текстом Hello World!
isBottomAlignedWith ()
Принимает сопоставление вида цели и возвращает утверждение вида, которое гарантирует, что сопоставление вида (фактическое) существует и выровнено снизу с сопоставителем вида цели.
onView(withId(R.id.view)) .check(isBottomAlignedWith(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и выровнено снизу с представлением, имеющим идентификатор R.id.target_view .
isCompletelyAbove ()
Принимает целевое сопоставление вида и возвращает утверждение вида, которое гарантирует, что сопоставление вида (фактическое) существует и полностью расположено над целевым сопоставлением вида.
onView(withId(R.id.view)) .check(isCompletelyAbove(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и располагается полностью над представлением, имеющим идентификатор R.id.target_view.
isCompletelyBelow ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится полностью ниже целевого сопоставления вида.
onView(withId(R.id.view)) .check(isCompletelyBelow(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и располагается полностью под представлением, имеющим идентификатор R.id.target_view .
isCompletelyLeftOf ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится полностью слева от целевого сопоставления вида.
onView(withId(R.id.view)) .check(isCompletelyLeftOf(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление с идентификатором R.id.view существует и позиционируется полностью слева от представления с идентификатором R.id.target_view
isCompletelyRightOf ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится полностью справа от целевого сопоставления вида.
onView(withId(R.id.view)) .check(isCompletelyRightOf(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и позиционируется полностью справа от представления, имеющего идентификатор R.id.target_view.
isLeftAlignedWith ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и выровнено по левому краю с сопоставителем целевого представления.
onView(withId(R.id.view)) .check(isLeftAlignedWith(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление с идентификатором R.id.view существует и выровнено по левому краю с представлением с идентификатором R.id.target_view
isPartiallyAbove ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится частично над целевым сопоставлением вида.
onView(withId(R.id.view)) .check(isPartiallyAbove(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и находится частично над представлением, имеющим идентификатор R.id.target_view.
isPartiallyBelow ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится частично ниже целевого сопоставления вида.
onView(withId(R.id.view)) .check(isPartiallyBelow(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и находится частично ниже представления, имеющего идентификатор R.id.target_view .
isPartiallyLeftOf ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится частично слева от целевого сопоставления вида.
onView(withId(R.id.view)) .check(isPartiallyLeftOf(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и располагается частично слева от представления, имеющего идентификатор R.id.target_view .
isPartiallyRightOf ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и находится частично справа от целевого сопоставления вида
onView(withId(R.id.view)) .check(isPartiallyRightOf(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление, имеющее идентификатор R.id.view, существует и частично позиционируется справа от представления, имеющего идентификатор R.id.target_view .
isRightAlignedWith ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и выровнено по правому краю с сопоставителем целевого представления.
onView(withId(R.id.view)) .check(isRightAlignedWith(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление с идентификатором R.id.view существует и выровнено по правому краю с представлением с идентификатором R.id.target_view .
isTopAlignedWith ()
Принимает целевое сопоставление вида и возвращает утверждение представления, которое гарантирует, что сопоставление вида (фактическое) существует и выровнено по верху с целевым сопоставлением представления.
onView(withId(R.id.view)) .check(isTopAlignedWith(withId(R.id.target_view)))
Здесь тестовый пример гарантирует, что представление с идентификатором R.id.view существует и выровнено по верху с представлением с идентификатором R.id.target_view
noEllipsizedText ()
Возвращает утверждение представления, которое гарантирует, что иерархия представления не содержит эллиптические или отрезанные текстовые представления.
onView(withId(R.id.view)) .check(noEllipsizedText());
noMultilineButtons ()
Возвращает утверждение представления, которое гарантирует, что иерархия представления не содержит многострочных кнопок.
onView(withId(R.id.view)) .check(noMultilineButtons());
noOverlaps ()
Возвращает утверждение представления, которое гарантирует, что объект-потомок, назначаемый TextView или ImageView, не перекрывает друг друга. У него есть другая опция, которая принимает сопоставление целевого представления и возвращает утверждение представления, которое гарантирует, что дочернее представление, соответствующее целевому представлению, не перекрывается.