2015-07-06 15 views
18

Qual è la differenza tra isDisplayed e withEffectiveVisibility?Espresso - withEfficaceVisibility vs isDisplayed

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


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

risposta

21

Secondo la documentazione

Restituisce un matcher che corrisponde {@link Visualizza} s che hanno visibilità "efficace" impostato al valore dato. La visibilità effettiva tiene conto non solo del valore di visibilità della vista, ma anche di quello dei suoi antenati. In caso di View.VISIBLE, questo significa che la vista e tutti i suoi antenati hanno visibilità = VISIBILE. In caso di GONE e INVISIBLE, è l'opposto - qualsiasi genitore GONE o INVISIBLE farà sì che tutti i suoi figli abbiano la loro visibilità effettiva.

Nota:

Contrariamente a quanto il nome potrebbe implicare, vista la visibilità non si traduce direttamente in se la vista viene visualizzata sullo schermo (usa isDisplayed() per questo). Ad esempio, la vista e tutti i suoi antenati possono avere visibilità = VISIBILE, ma potrebbe essere necessario scorrere la vista per essere effettivamente visibile all'utente. A meno che tu non stia specificatamente mirando al valore di visibilità con il tuo test, utilizza isDisplayed.

Quindi, se si utilizza per verificare se una vista è visibile uso isDisplayed() ma per altra verifica in caso se l'uso invisibile e andato withEffectiveVisibilty()