Sto tentando di aggiornare un EditText
come parte di un test di caffè espresso con:Aggiornamento di un EditText con Espresso
onView(allOf(withClassName(endsWith("EditText")), withText(is("Test")))).perform(clearText())
.perform(click())
.perform(typeText("Another test"));
Tuttavia ricevo il seguente errore:
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: (with class name: a string ending with "EditText" and with text: is "Test")
Abbattendo il test linea posso vedere che questo si verifica dopo aver eseguito clearText()
, quindi presumo che i matcher sono in fase di riesecuzione prima di ogni perform
e fallire il precedente alla seconda azione. Anche se questo ha senso, mi lascia un po 'confuso su come aggiornare il EditText
utilizzando Espresso. Come dovrei farlo?
Nota che non è possibile utilizzare un ID risorsa o simile in questo scenario e utilizzare la combinazione come mostrato sopra per identificare la vista corretta.
Grazie per la risposta. Sfortunatamente ci sono più EditTexts nell'attività, generati in modo programmato senza ID, quindi nessuno di questi suggerimenti funzionerà. – jgm
Capisco. Forse potresti impostare un tag per ogni EditText che crei e trovare la vista in base a quel tag. Il tag può essere usato solo per il test, ma ti darà almeno qualcosa per differenziare i campi EditText. Quindi, di nuovo, ciò potrebbe violare la condizione che hai citato alla fine della tua domanda (ho trascurato quella parte prima che avessi risposto). – Maxwell