Struktura testowania espresso - Wyświetl twierdzenia
Jak wspomniano wcześniej, asercja widoku służy do potwierdzenia, że zarówno rzeczywisty widok (znaleziony za pomocą dopasowań widoku), jak i oczekiwane widoki są takie same. Przykładowy kod jest następujący:
onView(withId(R.id.my_view)) .check(matches(withText("Hello")))
Tutaj,
onView () zwraca obiekt ViewInteration odpowiadający dopasowanemu widokowi. ViewInteraction służy do interakcji z dopasowanym widokiem.
withId (R.id.my_view) zwraca element dopasowujący widok, który będzie pasował do widoku (rzeczywistego), którego atrybuty id są równe my_view .
withText („Hello”) zwraca również element dopasowujący widok, który będzie pasował do widoku (oczekiwanego), którego atrybuty tekstowe są równe Hello .
check to metoda, która akceptuje argument typu ViewAssertion i wykonuje asercję przy użyciu przekazanego w obiekcie ViewAssertion .
Matching (withText („Hello”)) zwraca asercję widoku, która wykonareal jobtwierdzenia, że zarówno rzeczywisty widok (znaleziony przy użyciu withId ), jak i oczekiwany widok (znaleziony przy użyciu withText ) są jednym i tym samym.
Poznajmy niektóre z metod zapewnianych przez framework testowy espresso do potwierdzania obiektów widoku.
nie istnieje()
Zwraca potwierdzenie widoku, które gwarantuje, że element dopasowujący widok nie znajdzie żadnego pasującego widoku.
onView(withText("Hello")) .check(doesNotExist());
W tym przypadku przypadek testowy zapewnia, że nie ma widoku z tekstem Hello.
mecze()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i pasuje do widoku dopasowanego przez element dopasowujący widok docelowy.
onView(withId(R.id.textView_hello)) .check(matches(withText("Hello World!")));
W tym przypadku przypadek testowy zapewnia, że widok mający identyfikator, R.id.textView_hello istnieje i pasuje do widoku docelowego z tekstem Hello World!
isBottomAlignedWith ()
Akceptuje element dopasowujący widok docelowy i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest wyrównany do dołu z dopasowaniem widoku docelowego.
onView(withId(R.id.view)) .check(isBottomAlignedWith(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający identyfikator, R.id.view istnieje i jest wyrównany do dołu z widokiem o identyfikatorze R.id.target_view .
isCompletelyAbove ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony całkowicie powyżej elementu dopasowania widoku docelowego.
onView(withId(R.id.view)) .check(isCompletelyAbove(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony całkowicie powyżej widoku mającego id, R.id.target_view
isCompletelyBelow ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony całkowicie poniżej elementu dopasowującego widok docelowy.
onView(withId(R.id.view)) .check(isCompletelyBelow(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony całkowicie poniżej widoku o identyfikatorze R.id.target_view .
isCompletelyLeftOf ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony całkowicie na lewo od docelowego dopasowania widoku.
onView(withId(R.id.view)) .check(isCompletelyLeftOf(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony całkowicie na lewo od widoku z identyfikatorem, R.id.target_view
isCompletelyRightOf ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony całkowicie na prawo od elementu dopasowującego widok docelowy.
onView(withId(R.id.view)) .check(isCompletelyRightOf(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony całkowicie na prawo od widoku o identyfikatorze R.id.target_view.
isLeftAlignedWith ()
Akceptuje element dopasowujący widok docelowy i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest wyrównany do lewej z dopasowaniem widoku docelowego.
onView(withId(R.id.view)) .check(isLeftAlignedWith(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok o identyfikatorze, R.id.view istnieje i jest wyrównany do lewej z widokiem o identyfikatorze, R.id.target_view
isParticallyAbove ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony częściowo nad docelowym elementem dopasowującym widok.
onView(withId(R.id.view)) .check(isPartiallyAbove(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony częściowo nad widokiem mającym id, R.id.target_view
isParticallyBelow ()
Akceptuje element dopasowujący widok docelowy i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony częściowo poniżej elementu dopasowania widoku docelowego.
onView(withId(R.id.view)) .check(isPartiallyBelow(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony częściowo poniżej widoku o identyfikatorze R.id.target_view .
isParticallyLeftOf ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, które zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony częściowo na lewo od docelowego dopasowania widoku.
onView(withId(R.id.view)) .check(isPartiallyLeftOf(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony częściowo na lewo od widoku o identyfikatorze R.id.target_view .
isPartallyRightOf ()
Akceptuje docelowy element dopasowujący widok i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest umieszczony częściowo na prawo od docelowego dopasowania widoku
onView(withId(R.id.view)) .check(isPartiallyRightOf(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest umieszczony częściowo na prawo od widoku o identyfikatorze, R.id.target_view .
isRightAlignedWith ()
Akceptuje element dopasowujący widok docelowy i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest wyrównany do prawej strony z elementem dopasowującym widok docelowy.
onView(withId(R.id.view)) .check(isRightAlignedWith(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok mający id, R.id.view istnieje i jest wyrównany do prawej z widokiem mającym identyfikator, R.id.target_view .
isTopAlignedWith ()
Akceptuje element dopasowujący widok docelowy i zwraca potwierdzenie widoku, co zapewnia, że element dopasowujący widok (rzeczywisty) istnieje i jest wyrównany do góry z dopasowaniem widoku docelowego.
onView(withId(R.id.view)) .check(isTopAlignedWith(withId(R.id.target_view)))
W tym przypadku przypadek testowy zapewnia, że widok o identyfikatorze, R.id.view istnieje i jest wyrównany do góry z widokiem o identyfikatorze, R.id.target_view
noEllipsizedText ()
Zwraca potwierdzenie widoku, które zapewnia, że hierarchia widoków nie zawiera widoków wielokropka ani obciętych tekstów.
onView(withId(R.id.view)) .check(noEllipsizedText());
noMultilineButtons ()
Zwraca potwierdzenie widoku, które zapewnia, że hierarchia widoku nie zawiera przycisków wielowierszowych.
onView(withId(R.id.view)) .check(noMultilineButtons());
noOverlaps ()
Zwraca potwierdzenie widoku, które zapewnia, że obiekt podrzędny, który można przypisać do TextView lub ImageView, nie nakłada się na siebie. Ma inną opcję, która akceptuje element dopasowujący widok docelowy i zwraca potwierdzenie widoku, co zapewnia, że widok podrzędny pasujący do widoku docelowego nie nakłada się.