Lo strumento Espresso Test Recorder ti consente di creare test dell'interfaccia utente per la tua app senza scrivere codice di test. Registrando uno scenario di test, puoi registrare le tue interazioni con un dispositivo e aggiungere asserzioni per verificare gli elementi UI in snapshot particolari della tua app. Espresso Test Recorder prende la registrazione salvata e genera automaticamente un test UI corrispondente che puoi eseguire per testare la tua app.
Espresso Test Recorder scrive test basati sul framework di test Espresso, un'API in AndroidX Test. L'API Espresso ti incoraggia a creare test dell'interfaccia utente concisi e affidabili basati sulle azioni dell'utente. Definendo aspettative, interazioni e asserzioni senza accedere direttamente alle attività e alle visualizzazioni dell'app sottostante, questa struttura impedisce l'instabilità dei test e ottimizza la velocità di esecuzione dei test.
Disattivare le animazioni sul dispositivo di test
Prima di utilizzare Espresso Test Recorder, assicurati di disattivare le animazioni sul dispositivo di test per evitare risultati imprevisti. Segui le istruzioni di configurazione di Espresso, ma tieni presente che non devi impostare manualmente un riferimento di dipendenza alla libreria Espresso perché Test Recorder lo fa automaticamente quando salvi una registrazione. Questi passaggi devono essere eseguiti una sola volta per un determinato progetto.
Registra un test Espresso
I test Espresso sono costituiti da due componenti principali: interazioni UI e asserzioni sugli elementi View. Le interazioni con la UI includono azioni di tocco e digitazione che una persona può utilizzare per interagire con la tua app. Le asserzioni verificano l'esistenza o i contenuti degli elementi visivi sullo schermo. Ad esempio, un test Espresso per l'app di test delle note potrebbe includere interazioni dell'interfaccia utente per fare clic su un pulsante e scrivere una nuova nota, ma utilizzerebbe asserzioni per verificare l'esistenza del pulsante e i contenuti della nota.
Questa sezione illustra come creare entrambi i componenti di test utilizzando Espresso Test Recorder, nonché come salvare la registrazione completata per generare il test.
Registrare le interazioni con la UI
Per iniziare a registrare un test con Espresso Test Recorder:
- Fai clic su Esegui > Registra test Espresso.
- Nella finestra Seleziona destinazione di distribuzione, scegli il dispositivo su cui vuoi registrare il test. Se necessario, crea un nuovo Android Virtual Device. Fai clic su Ok.
- Espresso Test Recorder attiva una build del progetto e l'app deve essere installata e avviata prima che Espresso Test Recorder ti consenta di interagire con essa. La finestra Registra il test viene visualizzata dopo l'avvio dell'app e, poiché non hai ancora interagito con il dispositivo, nel pannello principale viene visualizzato il messaggio "Nessun evento registrato finora". Interagisci con il dispositivo per iniziare a registrare eventi come "tocco" e "digitazione".
Nota: prima di poter iniziare a registrare le interazioni, potresti visualizzare una finestra di dialogo sul dispositivo che indica "In attesa del debugger" o "Collegamento del debugger". Espresso Test Recorder utilizza il debugger per registrare gli eventi dell'interfaccia utente. Quando il debugger viene collegato, la finestra di dialogo si chiude automaticamente; non fare clic su Forza chiusura.
Le interazioni registrate vengono visualizzate nel riquadro principale della finestra Registra il test, come mostrato nella figura 1 di seguito. Quando esegui il test, Espresso tenterà di eseguire queste azioni nello stesso ordine.
Figura 1. La finestra Registra il test con le interazioni con l'interfaccia utente registrate.
Aggiungere asserzioni per verificare gli elementi UI
Le asserzioni verificano l'esistenza o i contenuti di un elemento View tramite tre tipi principali:
- il testo è: controlla il contenuto testuale dell'elemento Visualizzazione selezionato
- exists: verifica che l'elemento View sia presente nella gerarchia View corrente visibile sullo schermo
- non esiste: verifica che l'elemento View non sia presente nella gerarchia View attuale
Per aggiungere un'asserzione al test:
- Fai clic su Aggiungi asserzione. Viene visualizzata una finestra di dialogo Acquisizione schermo mentre Espresso recupera la gerarchia della UI e altre informazioni sullo stato attuale dell'app. La finestra di dialogo si chiude automaticamente una volta che Espresso ha acquisito lo screenshot.
- Un layout della schermata attuale viene visualizzato in un riquadro a destra della finestra Registra test. Per selezionare un elemento Visualizzazione su cui creare un'asserzione, fai clic sull'elemento nello screenshot o utilizza il primo menu a discesa nella casella Modifica asserzione in fondo alla finestra. L'oggetto Visualizza selezionato è evidenziato in un riquadro rosso.
- Seleziona l'asserzione che vuoi utilizzare dal secondo menu a discesa nella casella
Modifica asserzione. Espresso compila il menu con asserzioni valide
per l'elemento View selezionato.
- Se scegli l'asserzione "il testo è", Espresso inserisce automaticamente il testo attualmente all'interno dell'elemento View selezionato. Puoi modificare il testo in modo che corrisponda all'asserzione che preferisci utilizzando il campo di testo nella casella Modifica asserzione.
- Fai clic su Salva e aggiungi un'altra per creare un'altra asserzione o fai clic su Salva asserzione per chiudere i riquadri delle asserzioni.
Lo screenshot nella figura 2 mostra la creazione di un'asserzione "il testo è" per verificare che il titolo della nota sia "Buon test!":
Figura 2. La casella Modifica asserzione dopo la selezione di un elemento di visualizzazione (in rosso).
Durante la creazione di un'asserzione, puoi continuare a interagire con l'app, anche con i pannelli delle asserzioni ancora aperti nella finestra Registra il test. Espresso Test Recorder continuerà a registrare le tue azioni, ma l'asserzione che stai modificando verrà visualizzata prima di queste interazioni una volta salvata. Lo screenshot dell'asserzione conserva anche il layout che il dispositivo o l'emulatore aveva quando hai premuto il pulsante Aggiungi asserzione.
Salvare una registrazione
Una volta terminata l'interazione con l'app e l'aggiunta delle asserzioni, segui questi passaggi per salvare la registrazione e generare il test Espresso:
- Fai clic su Completa registrazione. Viene visualizzata la finestra Scegli un nome per la classe di test.
- Espresso Test Recorder assegna al test un nome univoco all'interno del pacchetto
in base al nome dell'attività avviata. Utilizza il campo di testo Nome classe di testse vuoi modificare il nome suggerito. Fai clic su
Salva.
- Se non hai aggiunto le dipendenze di Espresso alla tua app, quando provi a salvare il test viene visualizzata una finestra di dialogo Dipendenze di Espresso mancanti. Fai clic su Sì per aggiungere automaticamente le dipendenze
al file
build.gradle.
- Se non hai aggiunto le dipendenze di Espresso alla tua app, quando provi a salvare il test viene visualizzata una finestra di dialogo Dipendenze di Espresso mancanti. Fai clic su Sì per aggiungere automaticamente le dipendenze
al file
- Il file si apre automaticamente dopo che Espresso Test Recorder lo genera e
Android Studio mostra la classe di test selezionata nella finestra Progetto
dell'IDE.
- La posizione in cui viene salvato il test dipende dalla posizione della radice del test di strumentazione, nonché dal nome del pacchetto dell'attività avviata. Ad esempio, i test per l'app di test Note vengono salvati nella cartella src > androidTest > java > com.example.username.appname del modulo dell'app su cui hai registrato il test.
Esegui un test Espresso in locale
Per eseguire un test Espresso, utilizza la finestra Project
sul lato sinistro dell'IDE Android Studio:
- Apri la cartella del modulo dell'app che ti interessa e vai al test che vuoi eseguire.
La posizione del test dipende dalla posizione della radice del test di strumentazione e dal nome del pacchetto dell'attività avviata. I seguenti
esempi mostrano dove viene salvato un test per l'app di test Note:
- Se utilizzi la visualizzazione Android all'interno della finestra, vai a java > com.example.username.appname (androidTest).
- Se utilizzi la visualizzazione Progetto all'interno della finestra, vai a src > androidTest > java > com.example.username.appname all'interno della cartella del modulo.
- Fai clic con il tasto destro del mouse sul test e poi su Esegui "testName".
- In alternativa, puoi aprire il file di test e fare clic con il tasto destro del mouse sulla classe o sul metodo di test generato. Scopri di più su come eseguire i test nella pagina Testa la tua app.
- Nella finestra Seleziona destinazione di deployment, scegli il dispositivo su cui vuoi eseguire il test. Se necessario, crea un nuovo Android Virtual Device. Fai clic su Ok.
Monitora l'avanzamento del test nella finestra Esegui nella parte inferiore dell'IDE. Android Studio esegue una build completa del progetto e apre una scheda con il nome del test nella finestra Esegui, come mostrato nella figura 3. In questa scheda puoi controllare se il test ha esito positivo o negativo, nonché la durata dell'esecuzione. Al termine del test, nella scheda verrà registrato il messaggio "Test eseguiti fino al completamento".
Figura 3. Output di esempio nella finestra Esegui dopo l'esecuzione di un test Espresso in locale.
Per scoprire di più sulla scrittura delle configurazioni di esecuzione dei test, leggi la sezione "Definizione di una configurazione di test per una classe o un metodo" in Creare e modificare le configurazioni di esecuzione/debug.
Esegui un test Espresso con Firebase Test Lab per Android
Puoi utilizzare i test generati da Espresso Test Recorder con Firebase Test Lab per testare la tua app nel cloud su centinaia di configurazioni di dispositivi. Non sono previsti costi per testare la tua app con Test Lab all'interno della quota giornaliera senza costi del piano Spark. Per eseguire i test Espresso con Firebase Test Lab, crea un progetto Firebase per la tua app, quindi segui le istruzioni per eseguire i test con Firebase Test Lab da Android Studio.
Figura 4. Output di esempio nella finestra Esegui dopo l'esecuzione di un test con Firebase Test Lab su più dispositivi.