Creare test UI con Registratore di test Espresso

Lo strumento Registratore di test Espresso consente di creare test dell'interfaccia utente per la tua app senza scrivere alcun codice di test. Registrando uno scenario di test, puoi registrare le tue interazioni con un dispositivo e aggiungere asserzioni per verificare gli elementi dell'interfaccia utente in determinati snapshot della tua app. Espresso Test Recorder intraprende quindi la registrazione salvata e genera automaticamente un test dell'interfaccia utente corrispondente che puoi eseguire per testare la tua app.

Espresso Test Recorder scrive i test in base al 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 degli utenti. Dichiarando aspettative, interazioni e asserzioni senza accedere direttamente alle attività e alle visualizzazioni dell'app sottostanti, questa struttura previene eventuali irregolarità 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 è necessario impostare manualmente un riferimento di dipendenza alla libreria di Espresso perché Registratore di prova 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 dell'interfaccia utente e asserzioni sugli elementi View. Le interazioni dell'interfaccia utente 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 di elementi visivi sullo schermo. Ad esempio, un test Espresso per l'app di test di Notes potrebbe includere interazioni con l'interfaccia utente per fare clic su un pulsante e scrivere una nuova nota, ma utilizzerebbe le asserzioni per verificare l'esistenza del pulsante e dei contenuti della nota.

In questa sezione vedremo come creare entrambi i componenti di test con il Registratore di test Espresso e come salvare la registrazione terminata per generare il test.

Registra interazioni UI

Per avviare la registrazione di un test con il Registratore di prova Espresso, procedi nel seguente modo:

  1. Fai clic su Esegui > Registra test Espresso.
  2. Nella finestra Seleziona destinazione del deployment, scegli il dispositivo su cui vuoi registrare il test. Se necessario, crea un nuovo dispositivo virtuale Android. Fai clic su OK.
  3. Espresso Test Recorder attiva una build del tuo progetto e l'app deve essere installata e avviata prima che tu possa interagire con Espresso Test Recorder. La finestra Registra il test viene visualizzata dopo l'avvio dell'app e, poiché non hai ancora interagito con il dispositivo, nel riquadro principale viene visualizzato il messaggio "Nessun evento ancora registrato". Interagisci con il tuo dispositivo per iniziare a registrare eventi quali azioni "tocca" e "digita".

Nota: prima di poter iniziare a registrare le interazioni, potresti visualizzare una finestra di dialogo sul dispositivo con il messaggio "In attesa di Debugger" o "Collegamento a Debugger". Espresso Test Recorder utilizza il debugger per registrare gli eventi dell'interfaccia utente. Una volta collegato il debugger, la finestra di dialogo si chiuderà automaticamente; non fare clic su Forza chiusura.

Le interazioni registrate verranno visualizzate nel riquadro principale della finestra Registra il test, come mostrato nella figura 1 di seguito. Quando esegui il test, il test Espresso proverà a eseguire queste azioni nello stesso ordine.

Figura 1. La finestra Registra il test con le interazioni con la UI registrate.

Aggiungi asserzioni per verificare gli elementi UI

Le asserzioni verificano l'esistenza o i contenuti di un elemento View attraverso tre tipi principali:

  • text is: controlla i contenuti testuali dell'elemento Visualizza selezionato.
  • exists: verifica che l'elemento View sia presente nella gerarchia degli elementi View corrente visibile sullo schermo
  • non esiste: verifica che l'elemento View non sia presente nella gerarchia attuale delle visualizzazioni.

Per aggiungere un'asserzione al test, procedi come segue:

  1. Fai clic su Aggiungi asserzione. Viene visualizzata la finestra di dialogo Cattura schermo , mentre Espresso riceve la gerarchia dell'interfaccia utente e altre informazioni sullo stato attuale dell'app. La finestra di dialogo si chiude automaticamente una volta che Espresso ha acquisito lo screenshot.
  2. Un layout della schermata corrente viene visualizzato in un riquadro a destra della finestra Registra il test. Per selezionare un elemento Visualizza 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 una casella rossa.
  3. Seleziona l'asserzione che vuoi utilizzare dal secondo menu a discesa nella casella Modifica asserzione. Espresso completa il menu con asserzioni valide per l'elemento View selezionato.
    • Se scegli l'asserzione "text is", Espresso inserisce automaticamente il testo attualmente presente all'interno dell'elemento View selezionato. Puoi modificare il testo in modo che corrisponda all'asserzione desiderata utilizzando il campo di testo nella casella Modifica asserzione.
  4. Fai clic su Salva e aggiungi un'altra per creare un'altra asserzione oppure fai clic su Salva asserzione per chiudere i riquadri delle asserzioni.

Lo screenshot nella figura 2 mostra un'asserzione "text is" creata per verificare che il titolo della nota sia "Happy Testing!":

Figura 2. La casella Modifica asserzione dopo la selezione di un elemento Visualizza (in rosso).

Durante la creazione di un'asserzione, puoi continuare a interagire con l'app, anche con i riquadri delle asserzioni ancora aperti nella finestra Registra il test. Espresso Test Recorder continuerà a registrare le tue azioni, ma l'asserzione che stai modificando apparirà prima di queste interazioni una volta salvata. Lo screenshot dell'asserzione conserva anche il layout che aveva il dispositivo o l'emulatore quando hai fatto clic sul pulsante Aggiungi asserzione.

Salvare una registrazione

Dopo aver terminato l'interazione con l'app e l'aggiunta delle asserzioni, procedi nel seguente modo per salvare la registrazione e generare il test Espresso:

  1. Fai clic su Completa registrazione. Viene visualizzata la finestra Scegli un nome per la classe di test.
  2. Registratore di test Espresso assegna al test un nome univoco all'interno del pacchetto, in base al nome dell'attività avviata. Utilizza il campo di testo Nome corso di test se vuoi modificare il nome suggerito. Fai clic su Salva.
    • Se non hai aggiunto le dipendenze Espresso all'app, viene visualizzata la finestra di dialogo Dipendenze Espresso mancanti quando provi a salvare il test. Fai clic su per aggiungere automaticamente le dipendenze al file build.gradle.
  3. Il file si apre automaticamente dopo la generazione di Espresso Test Recorder e Android Studio mostra la classe di test selezionata nella finestra Project dell'IDE.
    • Il punto in cui il test viene salvato dipende dalla posizione della root del test di strumentazione, nonché dal nome del pacchetto dell'attività avviata. Ad esempio, i test per l'app di test di Notes salvano nella cartella src > androidTest > java > com.example.nomeutente.nomeapp 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 di Android Studio:

  1. Apri la cartella del modulo dell'app desiderato e vai al test che vuoi eseguire. La località del test dipende dalla posizione della root del test di strumentazione e dal nome del pacchetto dell'attività avviata. I seguenti esempi mostrano dove un test verrebbe salvato per l'app di test di Notes:
    • Se utilizzi la vista Android all'interno della finestra, vai a java > com.example.nomeutente.nomeapp (androidTest).
    • Se utilizzi la visualizzazione Progetto all'interno della finestra, vai a src > androidTest > java > com.example.nomeutente.nomeapp all'interno della cartella del modulo.
  2. Fai clic con il tasto destro del mouse sul test e seleziona 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 generati. Scopri di più su come eseguire i test nella pagina Testa la tua app.
  3. Nella finestra Seleziona destinazione del deployment, scegli il dispositivo su cui vuoi eseguire il test. Se necessario, crea un nuovo dispositivo virtuale Android. 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. Puoi verificare se il test è stato superato o meno in questa scheda, nonché quanto tempo è stato necessario per essere eseguito. Al termine del test, la scheda registrerà "Test eseguiti fino al completamento".

Figura 3. Output di esempio nella finestra Esegui dopo aver eseguito un test Espresso in locale.

Per saperne di più sulla scrittura di configurazioni di esecuzione di test, leggi la sezione "Definizione di una configurazione di test per una classe o un metodo" in Creare e modificare configurazioni di esecuzione/debug.

Esegui un test Espresso con Firebase TestLab 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 dispositivo. Non è previsto alcun costo per testare la tua app con Test Lab all'interno della quota giornaliera senza costi sul piano Spark. Per eseguire i test Espresso con Firebase Test Lab, crea un progetto Firebase per la tua app e segui le istruzioni per eseguire i test con Firebase Test Lab da Android Studio.

Figura 4. Output di esempio nella finestra Esegui dopo aver eseguito un test con Firebase Test Lab su più dispositivi.