Test in Android Studio

Android Studio è progettato per semplificare i test. Contiene molte funzionalità per semplificare la creazione, l'esecuzione e l'analisi dei test. Puoi configurare test da eseguire sul tuo computer locale o test strumentati da eseguire su un dispositivo. Puoi eseguire facilmente un singolo test o un gruppo specifico di test su uno o più dispositivi. I risultati del test vengono visualizzati direttamente in Android Studio.

Figura 1. Android Studio che mostra la panoramica dei risultati del test.

Questa pagina spiega come gestire i test in Android Studio. Per scoprire come scrivere test Android automatizzati, consulta Testare le app su Android.

Tipi di test e località

La posizione dei test dipende dal tipo di test che scrivi. I progetti Android hanno directory del codice sorgente predefinite per i test delle unità locali e i test strumentati.

I test locali delle unità si trovano in module-name/src/test/java/. Si tratta di test che vengono eseguiti sulla Java Virtual Machine (JVM) locale della tua macchina. Utilizza questi test per ridurre al minimo il tempo di esecuzione quando i test non hanno dipendenze dal framework Android o quando puoi creare test doppi per le dipendenze dal framework Android. Per ulteriori informazioni su come scrivere test delle unità locali, vedi Creare test delle unità locali.

I test strumentati si trovano in $module-name/src/androidTest/java/. Questi test vengono eseguiti su un dispositivo hardware o un emulatore. Hanno accesso alle API Instrumentation che ti consentono di accedere a informazioni, ad esempio la classe Context, sull'app che stai testando e di controllare l'app in test dal codice di test. I test strumentati sono integrati in un APK separato, quindi hanno un proprio file AndroidManifest.xml. Questo file viene generato automaticamente, ma puoi creare la tua versione all'indirizzo $module-name/src/androidTest/AndroidManifest.xml, che verrà unita al manifest generato. Utilizza i test strumentati quando scrivi test di integrazione e funzionali dell'interfaccia utente per automatizzare l'interazione dell'utente oppure quando i tuoi test hanno dipendenze Android per le quali non puoi creare test doppi. Per ulteriori informazioni su come scrivere test strumentati, consulta Creare test strumentati e Automatizzare i test dell'interfaccia utente.

Puoi inserire i test in directory specifiche della variante di build per testare solo varianti di build specifiche. Ad esempio, puoi inserire alcuni test delle unità locali in $module-name/src/testMyFlavor/java/ in modo che i test siano destinati alla tua app creata con il codice sorgente di questa variante. Per ulteriori informazioni su come creare questi test personalizzati, vedi Creare un test strumentato per una variante di build.

Quando crei un nuovo progetto o aggiungi un modulo app, Android Studio crea i set di origini di test elencati in precedenza e include un file di test di esempio in ciascuno. Puoi visualizzarli nella finestra Progetto, come mostrato nella Figura 2.

Figura 2. I test strumentati (1) e i test JVM locali (2) del tuo progetto sono visibili nella visualizzazione Progetto (a sinistra) o Android (a destra).

Creare nuovi test

Per aggiungere un nuovo test per una classe o un metodo specifico direttamente dal codice sorgente, segui questi passaggi:

  1. Apri il file di origine contenente il codice che vuoi testare.
  2. Posiziona il cursore sul nome della classe o del metodo che vuoi testare e premi Ctrl+Maiusc+T (Cmd+Maiusc+T su macOS).
  3. Nel popup visualizzato, fai clic su Crea nuovo test…
  4. Nella finestra di dialogo Crea test, scegli JUnit4, modifica i campi e i metodi che vuoi generare, quindi fai clic su Ok.
  5. Nella finestra di dialogo Scegli directory di destinazione, fai clic sul set di origini corrispondente al tipo di test che vuoi creare: androidTest per un test strumentato o test per un test delle unità locale. Quindi, fai clic su Ok.

In alternativa, puoi creare un file di test generico nel set di origini di test appropriato come segue:

  1. Nella finestra Progetto a sinistra, fai clic sul menu a discesa e seleziona la visualizzazione Android.
  2. Fai clic con il tasto destro del mouse sulla directory java e seleziona Nuovo > Classe Java o Nuovo > Classe/file Kotlin. In alternativa, puoi selezionare la directory java e utilizzare la scorciatoia Ctrl+N (Comando+N su macOS).
  3. Nella finestra di dialogo Scegli directory di destinazione, fai clic sul set di origini corrispondente al tipo di test che vuoi creare: androidTest per un test strumentato o test per un test delle unità locale. Quindi, fai clic su Ok.
  4. Assegna un nome al file e fai clic su Ok.

Se la tua app non viene compilata dopo l'aggiunta di un test, assicurati di aver configurato le dipendenze della libreria di test corrette. Per le dipendenze corrette, consulta Creare test locali e Creare test strumentati.

Esegui test

Prima di eseguire qualsiasi test, assicurati che il progetto sia completamente sincronizzato con Gradle facendo clic su Sincronizza progetto nella barra degli strumenti. Puoi eseguire test con diversi livelli di granularità:

  • Per eseguire tutti i test in una directory o in un file, apri la finestra Progetto ed esegui una delle seguenti operazioni:

    • Fai clic con il tasto destro del mouse su una directory o un file e poi su Esegui .
    • Seleziona la directory o il file e utilizza la scorciatoia Ctrl+Maiusc+R.
  • Per eseguire tutti i test in una classe o un metodo specifico, apri il file di test nell'editor di codice ed esegui una delle seguenti operazioni:

    • Premi l'icona Esegui test nel margine.
    • Fai clic con il tasto destro del mouse sulla classe o sul metodo di test e fai clic su Esegui .
    • Seleziona la classe o il metodo di test e utilizza la scorciatoia Ctrl+Maiusc+R.

I test strumentati verranno eseguiti su un emulatore o un dispositivo fisico. Per saperne di più sulla configurazione dei dispositivi fisici, consulta Eseguire app su un dispositivo hardware. Per saperne di più sulla configurazione degli emulatori, vedi Eseguire app sull'emulatore Android.

Configurare l'esecuzione del test

Per impostazione predefinita, i test vengono eseguiti utilizzando la configurazione di esecuzione predefinita di Android Studio. Se devi modificare alcune impostazioni di esecuzione, ad esempio lo strumento di esecuzione di strumentazione e le opzioni di deployment, puoi modificare la configurazione di esecuzione nella finestra di dialogo Configurazioni di esecuzione/debug (fai clic su Esegui > Modifica configurazioni).

Esecutore test Gradle unificato

Il plug-in Android per Gradle 7.1.0 e Android Studio Bumblebee e versioni successive utilizzano l'implementazione propria di Gradle di Android instrumented test runner per eseguire test strumentati. Utilizzando lo stesso test runner, è probabile che i risultati siano coerenti sia che eseguiate il test utilizzando AGP dalla riga di comando, ad esempio su un server di integrazione continua, sia da Android Studio.

Figura 3. L'esecutore test Gradle unificato.

Le versioni precedenti di Android Studio utilizzano il runner di test strumentati IntelliJ Android anziché il runner di test strumentati Android di Gradle. Pertanto, se non utilizzi l'ultima versione di Android Studio, a seconda che esegui i test da Android Studio o dalla riga di comando utilizzando il plug-in Gradle, potresti visualizzare risultati diversi, ad esempio test superati utilizzando un runner e non superati su un altro.

Figura 4. Esecutori di test discreti nelle versioni precedenti di Android Studio.

Se nel progetto sono già salvate configurazioni di test strumentati, Gradle verrà utilizzato per eseguire i test sul dispositivo connesso. Puoi creare una nuova configurazione di test strumentato utilizzando l'azione della barra laterale accanto alla classe o al metodo di test, come mostrato di seguito.

Figura 5. Esegui test dall'azione della barra laterale.

Quando esegui i test strumentati, puoi verificare che Android Studio utilizzi il runner di test Gradle esaminando l'output del test nella matrice di test per l'output dell'attività Gradle.

Esegui su più dispositivi in parallelo

Per impostazione predefinita, i test strumentati vengono eseguiti su un emulatore o un dispositivo fisico. Se vuoi vedere come si comportano i test su un insieme più ampio di dispositivi, puoi selezionare più dispositivi seguendo questi passaggi:

  1. Prima di eseguire i test, apri il menu a discesa Dispositivo di destinazione e seleziona Seleziona più dispositivi….

    Figura 6. Seleziona il menu a discesa Più dispositivi.

  2. Seleziona i dispositivi che preferisci e fai clic su Ok.

  3. Assicurati che il testo nel menu a discesa di destinazione sia cambiato in Più dispositivi e fai clic su Esegui .

  4. La finestra dello strumento Matrice di test mostra i risultati del test per ogni configurazione del dispositivo selezionata.

    Figura 7. Risultati del test nella finestra dello strumento Matrice di test.

  5. Puoi fare clic su un test specifico per esaminare il risultato nel riquadro di output. Puoi anche ordinare i test facendo clic sulle varie colonne.

Esegui con Firebase Test Lab

Utilizzando Firebase Test Lab, puoi testare contemporaneamente la tua app su molti dispositivi Android e configurazioni di dispositivi popolari (diverse combinazioni di impostazioni internazionali, orientamento, dimensioni dello schermo e versione della piattaforma). Questi test vengono eseguiti su dispositivi fisici e virtuali in data center Google remoti. I risultati del test forniscono i log di test e includono i dettagli di eventuali errori dell'app.

Per iniziare a utilizzare Firebase Test Lab, devi:

  1. Crea un Account Google, se non ne hai già uno.
  2. Nella console Firebase, fai clic su Crea nuovo progetto.

Android Studio fornisce strumenti integrati che ti consentono di configurare la modalità di deployment dei test in Firebase Test Lab. Dopo aver creato un progetto Firebase, puoi creare una configurazione di test ed eseguire i test:

  1. Fai clic su Esegui > Modifica configurazioni dal menu principale.
  2. Fai clic su Aggiungi nuova configurazione e seleziona Test strumentali Android.
  3. Inserisci o seleziona i dettagli del test, ad esempio nome, tipo di modulo, tipo di test e classe di test.
  4. Nel menu a discesa Target in Opzioni target di distribuzione, seleziona Matrice di dispositivi Firebase Test Lab.
  5. Se non hai eseguito l'accesso, fai clic su Accedi con Google e consenti ad Android Studio di accedere al tuo account.
  6. Accanto a Progetto Cloud, seleziona il tuo progetto Firebase dall'elenco.
  7. Accanto a Configurazione matrice, seleziona una delle configurazioni predefinite dal menu a discesa o crea la tua premendo Apri finestra di dialogo . Puoi selezionare uno o più dispositivi, versioni di Android, impostazioni internazionali e orientamenti dello schermo con cui vuoi testare la tua app. Firebase Test Lab testerà la tua app in base a ogni combinazione delle tue selezioni durante la generazione dei risultati del test.
  8. Fai clic su Ok nella finestra di dialogo Configurazioni di esecuzione/debug per uscire.
  9. Esegui i test facendo clic su Esegui .

Figura 8. Creazione di una configurazione di test per Firebase Test Lab.

Analizzare i risultati del test

Al termine dell'esecuzione dei test da parte di Firebase Test Lab, si aprirà la finestra Esegui per mostrare i risultati, come illustrato nella figura 9. Potresti dover fare clic su Mostra superati per visualizzare tutti i test eseguiti.

Figura 9. I risultati dei test strumentati utilizzando Firebase Test Lab.

Puoi anche analizzare i test sul web seguendo il link visualizzato all'inizio del log di esecuzione del test nella finestra Esegui.

Visualizzare la copertura dei test

Lo strumento di copertura dei test è disponibile per i test delle unità locali per monitorare la percentuale e le aree del codice dell'app coperte dai test delle unità. Utilizza lo strumento di copertura dei test per determinare se hai testato adeguatamente gli elementi, le classi, i metodi e le righe di codice che compongono la tua app.

Per eseguire i test con la copertura, segui gli stessi passaggi descritti in Eseguire i test, solo che anziché fare clic su Esegui , fai clic su Esegui test-name con copertura . Nella finestra Progetto, questa opzione potrebbe essere nascosta dietro Altre esecuzioni/debug. Puoi anche configurare le impostazioni di copertura nella finestra di dialogo Run/Debug Configurations (Configurazioni di esecuzione/debug), nella scheda Code Coverage (Copertura del codice).

Figura 10. Percentuali di copertura del codice per un'applicazione.

Visualizzare i risultati dei test

Quando esegui uno o più test da Android Studio, i risultati vengono visualizzati nella finestra Esegui. La figura 11 mostra un test eseguito correttamente.

Figura 11. I risultati del test vengono visualizzati nella finestra Esegui.

La finestra Esegui mostra i test in una visualizzazione ad albero a sinistra e i risultati e i messaggi per la suite di test corrente nel riquadro di output a destra. Utilizza le barre degli strumenti, i menu contestuali e le icone di stato per gestire i risultati del test, come segue:

  1. Utilizza la barra degli strumenti di esecuzione per eseguire nuovamente il test corrente, interromperlo, eseguire nuovamente i test non riusciti (non visualizzati perché disponibili solo per i test unitari), mettere in pausa l'output e scaricare i thread.
  2. Utilizza la barra degli strumenti di test per filtrare e ordinare i risultati dei test. Puoi anche espandere o comprimere i nodi, mostrare la copertura dei test e importare o esportare i risultati dei test.
  3. Fai clic sul menu contestuale per monitorare il test in esecuzione, mostrare le statistiche in linea, scorrere fino alla traccia dello stack, aprire il codice sorgente in corrispondenza di un'eccezione, scorrere automaticamente fino all'origine e selezionare il primo test non riuscito al termine dell'esecuzione del test.
  4. Le icone di stato del test indicano se un test presenta un errore, è stato ignorato, non è riuscito, è in corso, è stato superato, è in pausa, è stato interrotto o non è stato eseguito.
  5. Fai clic con il tasto destro del mouse su una riga nella visualizzazione ad albero per visualizzare un menu contestuale che ti consente di eseguire i test in modalità di debug, aprire il file del codice sorgente del test o passare alla riga nel codice sorgente in fase di test.

Analizzare i test non riusciti

Quando uno o più test non riescono, nella finestra dei risultati viene visualizzato un segnale di avviso e il numero di errori (ad esempio "Test non riusciti: 1"):

Figura 12. Dettagli del test non riuscito nel riquadro di output.

Quando fai clic sul test non riuscito nella visualizzazione ad albero a sinistra, il riquadro di output a destra mostra i dettagli del test. Mostra il valore previsto accanto al valore effettivo, in modo da poterli confrontare. Il link Fai clic per visualizzare la differenza apre un visualizzatore delle differenze in cui puoi vedere i risultati affiancati.

Scopri di più

Questa pagina illustra i passaggi di base da seguire per creare ed eseguire il primo test utilizzando Android Studio. Puoi anche scegliere di eseguire i test dalla riga di comando. Puoi anche consultare la documentazione di IntelliJ sui test. Per ulteriori informazioni su come configurare i test durante la creazione di una suite di test più ampia, consulta Configurazione avanzata dei test.