2015-07-06 4 views
18

Was ist der Unterschied zwischen isDisplayed und withEffectiveVisibility?Espresso - withEffectiveVisibility vs isDisplayed

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


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

Antwort

21

Nach der Dokumentation

Gibt eine Matcher, die {@link Ansicht} s übereinstimmt, die "effektive" Sichtbarkeit auf den angegebenen Wert hat. Die effektive Sichtbarkeit berücksichtigt nicht nur den Sichtbarkeitswert der Ansicht, sondern auch den ihrer Vorfahren. Im Falle von View.VISIBLE bedeutet dies, dass die Ansicht und alle ihre Vorfahren visibility = VISIBLE haben. Im Falle von GONE und INVISIBLE ist das Gegenteil der Fall - jedes GONE oder UNSICHTBARE Elternteil wird alle seine Kinder effektiv sichtbar machen.

Hinweis:

Im Gegensatz zu dem, was der Name bedeuten kann, Ansicht Sichtbarkeit direkt in nicht übersetzen, ob die Ansicht auf dem Bildschirm angezeigt wird (verwenden Sie wirdangezeigt() für das). Zum Beispiel können die Sicht und alle ihre Vorfahren visibility = VISIBLE haben, aber die Ansicht muss möglicherweise gescrollt werden, um für den Benutzer tatsächlich sichtbar zu sein. Sofern Sie nicht gezielt den Sichtbarkeitswert für Ihren Test festlegen, verwenden Sie isDisplayed.

Also, wenn verwendet für die Überprüfung, ob eine Ansicht ist sichtbar Verwendung wirdangezeigt() aber für andere Überprüfung einhüllen, wenn unsichtbar und gegangen Verwendung withEffectiveVisibilty()