2013-10-25 10 views
6

Sto provando la nuova libreria di test Android Espresso. Quando provo:Android Espresso NoMatchingViewException on check

onView(withId(R.id.gettingStarted)) 

Il test funziona correttamente. Ma quando provo:

onView(withId(R.id.gettingStarted)).check(matches(isDisplayed())); 

ottengo un nulla .NoMatchingViewException: No views in hierarchy found matching: with id: is <2131296645>

qualcuno ha visto come questo prima? Il mio riflesso iniziale è che questo è solo un bug perché Espresso è solo sulla versione 1.0. Sto utilizzando Android Studio e ho seguito esattamente le istruzioni di configurazione.

risposta

7

Questo è il comportamento previsto.

onView(withId(R.id.gettingStarted)) da solo non fa nulla. Quando invochi il metodo perform, Espresso esegue il matcher fornito all'interno del metodo onView rispetto alla gerarchia della vista corrente - se non viene trovata alcuna vista corrispondente, viene generata l'eccezione.

consultare la Guida di avvio per maggiori dettagli: https://google.github.io/android-testing-support-library/docs/espresso/index.html

+3

Ma la vista è presente nella gerarchia, il controllo è più veloce delle viste che vengono caricate? –

0

Ci sono molti casi legittimi in cui non è possibile determinare R.id al momento dello sviluppo del test. Ad esempio, la vista specifica potrebbe non avere un R.id o R.id non è univoco. Ciò può rendere i normali test di strumentazione fragili e complicati da scrivere perché il modo normale per accedere alla vista (con findViewById()) non funziona. Pertanto, potrebbe essere necessario accedere ai membri privati ​​dell'attività o Frammento che tengono la vista o trovare un contenitore con un R.id noto e navigare verso il suo contenuto per la vista particolare.

Per maggiori informazioni: https://code.google.com/p/android-test-kit/wiki/EspressoStartGuide

+4

Non sono sicuro che sia giusto. Penso che ciò a cui ti riferisci sia un AmbiguousException, ma qui semplicemente non riesce a trovare la vista. Ciò che è così strano, è che sembra trovare la vista, ma una volta che faccio una sorta di asserzione, non può più trovarla. – Zargoon

0

Ciò significa che, senza vista per questo ID si trova nella gerarchia completa dell'Albero interfaccia utente, indipendentemente dal fatto che la vista è visibile o invisibile.