2015-07-06 8 views
18

Jaka jest różnica między isDisplayed i withEffectiveVisibility?Espresso - zEffectiveVisibility vs isDisplayed

onView(withText("Much Dagger")).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))); 


onView(withText("Much Dagger")).check(matches(ViewMatchers.isDisplayed()); 

Odpowiedz

21

Zgodnie z dokumentacją

Zwraca dopasowywania pasujący {@link Wyświetl} y, które mają „skuteczne” widoczność ustawiona na podaną wartość. Skuteczna widoczność uwzględnia nie tylko wartość widoczności widoku, ale także jego przodków. W przypadku View.VISIBLE oznacza to, że widok i wszyscy jego przodkowie mają widoczność = VISIBLE. W przypadku GONE i INVISIBLE jest odwrotnie - każdy GONE lub INVISIBLE parent sprawi, że wszystkie jego dzieci będą miały efektywną widoczność.

Uwaga:

Wbrew temu, co sama nazwa może sugerować, widok widoczność nie przekładają się bezpośrednio czy widok jest wyświetlany na ekranie (użyj isDisplayed() dla tego). Na przykład widok i wszyscy jego przodkowie mogą mieć widoczność = WIDOCZNA, ale widok może być przewijany, aby był faktycznie widoczny dla użytkownika. Jeśli nie jesteś specjalnie ukierunkowany na wartość widoczności za pomocą testu, użyj funkcji isDisplayed.

Więc jeśli używasz do weryfikacji, czy widok jest widoczny użycie isDisplayed() ale dla innej weryfikacji okrywać jeśli niewidzialne i poszedł użytkowania withEffectiveVisibilty()

Powiązane problemy