Test in Android Studio

Android Studio è progettato per semplificare i test. Contiene molte funzionalità che semplificano la creazione, l'esecuzione e l'analisi dei test. Puoi configurare test eseguiti sulla tua macchina locale o test instrumentati eseguiti 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 mostrati direttamente in Android Studio.

Figura 1. Android Studio che mostra una panoramica dei risultati dei test.

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

Tipi di test e località

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

I test delle unità locali si trovano in module-name/src/test/java/. Questi sono 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 del framework Android o quando puoi creare duplicati di test per le dipendenze del framework Android. Per maggiori informazioni su come scrivere test delle unità locali, consulta Creare test delle unità locali.

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

Puoi inserire i test in directory specifiche delle varianti di build per testare solo varianti di build specifiche. Ad esempio, potresti eseguire alcuni test delle unità locali in $module-name/src/testMyFlavor/java/, in modo che i test abbiano come target la tua app creata con il codice sorgente di questa versione. Per saperne di più su come creare questi test personalizzati, consulta Creare un test instrumentato per una variante di build.

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

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

Crea nuovi test

Puoi aggiungere un nuovo test per una classe o un metodo specifico direttamente dal relativo codice sorgente seguendo questi passaggi:

  1. Apri il file di origine contenente il codice da testare.
  2. Posiziona il cursore nel nome della classe o del metodo che vuoi testare e premi Ctrl+Maiusc+T (Comando+Maiusc+T su macOS).
  3. Nella finestra popup visualizzata, 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 origine corrispondente al tipo di test che vuoi creare: androidTest per un test instrumentato 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 indicato di seguito:

  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 > Kotlin Class/File. 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 origine corrispondente al tipo di test che vuoi creare: androidTest per un test instrumentato 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 si compila dopo l'aggiunta di un test, assicurati di aver configurato le dipendenze della libreria di test corrette. Consulta gli articoli Creare test locali e Creare test instrumentati per le dipendenze corrette.

Esegui test

Prima di eseguire qualsiasi test, assicurati che il progetto sia completamente sincronizzato con Gradle facendo clic su Sync Project 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 fai clic su Esegui .
    • Seleziona la directory o il file e utilizza la scorciatoia Ctrl+Maiusc+R.
  • Per eseguire tutti i test in una classe o in un metodo specifico, apri il file di test nell'editor di codice ed esegui una delle seguenti operazioni:

    • Premi l'icona Esegui test nella grondaia.
    • 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 del test e utilizza la scorciatoia Ctrl+Maiusc+R.

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

Configura 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, come il runner della strumentazione e le opzioni di deployment, puoi modificare la configurazione di esecuzione nella finestra di dialogo Esegui/configurazioni di debug (fai clic su Esegui > Modifica configurazioni).

Esecutore test Gradle unificato

Il plug-in Android Gradle 7.1.0 e Android Studio Bumblebee e versioni successive utilizzano l'implementazione proprietaria di Gradle del runner instrumentato di Android per eseguire test instrumentati. Utilizzando lo stesso esecutore del test, è probabile che i risultati siano coerenti, a prescindere dall'esecuzione di AGP dalla riga di comando, ad esempio su un server di integrazione continua, o da Android Studio.

Figura 3. Il programma di esecuzione del test Unified Gradle.

Le versioni precedenti di Android Studio utilizzano il runner instrumentato per IntelliJ Android invece che quello instrumentato per Android di Gradle. Quindi, se non utilizzi la versione più recente di Android Studio, a seconda che i test vengano eseguiti da Android Studio o dalla riga di comando utilizzando il plug-in Gradle, potresti vedere risultati di test diversi, ad esempio test superati con un runner e non riusciti su un altro.

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

Se hai già salvato configurazioni di test con strumentazione nel progetto, questi utilizzeranno Gradle per eseguire i test sul tuo dispositivo connesso. Puoi creare una nuova configurazione di test strumentata utilizzando l'azione grondaia accanto alla classe o al metodo di test, come mostrato di seguito.

Figura 5. Esegui test dall'azione gutter.

Durante l'esecuzione dei test instrumentati, puoi confermare che Android Studio stia utilizzando l'esecutore del test Gradle ispezionando l'output del test nella matrice di test per l'output dell'attività Gradle.

Eseguire su più dispositivi in parallelo

Per impostazione predefinita, i test strumentali vengono eseguiti su un emulatore o un dispositivo fisico. Se vuoi vedere il comportamento dei test su un insieme più ampio di dispositivi, puoi selezionarne più 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 ti interessano e fai clic su OK.

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

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

    Figura 7. Risultati del test nella finestra dello strumento Test Matrix.

  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

Con Firebase Test Lab, puoi testare contemporaneamente la tua app su molti dei dispositivi Android e delle configurazioni dei dispositivi più comuni (combinazioni diverse 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 dei test forniscono 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 offre strumenti integrati che ti consentono di configurare il modo in cui implementare i 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 nel menu principale.
  2. Fai clic su Aggiungi nuova configurazione e seleziona Test strumentali per Android.
  3. Inserisci o seleziona i dettagli del test, come il nome, il tipo di modulo, il tipo di test e la classe del test.
  4. Dal menu a discesa Destinazione in Opzioni di destinazione del deployment, seleziona Matrice di dispositivi di 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 progetto Firebase dall'elenco.
  7. Accanto a Configurazione matrice, seleziona una delle configurazioni predefinite dal menu a discesa o creane una personalizzata 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. Per uscire, fai clic su OK nella finestra di dialogo Esegui/configura configurazioni di debug.
  9. Esegui i test facendo clic su Esegui .

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

Analizza i risultati dei test

Al termine dell'esecuzione dei test, Firebase Test Lab si aprirà la finestra Esegui per mostrare i risultati, come mostrato nella Figura 9. Potresti dover fare clic su Mostra superati per vedere tutti i test eseguiti.

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

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

Visualizza copertura test

Lo strumento di copertura dei test è disponibile per i test delle unità locali al fine di monitorare la percentuale e le aree del codice dell'app coperte dai test delle unità. Utilizza lo strumento di copertura di test per determinare se hai testato in modo adeguato 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 Esegui test. Anziché fare clic su Esegui , fai clic su Esegui nome-test con copertura . Nella finestra Progetto, questa opzione potrebbe essere nascosta da Altro esecuzione/debug. Puoi anche configurare le impostazioni di copertura nella finestra di dialogo Configurazioni di esecuzione/debug, nella scheda Copertura 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'esecuzione di test riuscita.

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

La finestra Esegui mostra i test in una visualizzazione ad albero a sinistra, mentre i risultati e i messaggi relativi alla 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 attuale, interromperlo, eseguire nuovamente i test non riusciti (non mostrati perché è disponibile solo per i test delle unità), mettere in pausa l'output e scaricare i thread.
  2. Utilizza la barra degli strumenti per i 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 del test.
  3. Fai clic sul menu contestuale per monitorare il test in esecuzione, visualizzare le statistiche in linea, scorrere fino all'analisi dello stack, aprire il codice sorgente in caso di eccezione, scorrere automaticamente fino al codice sorgente e selezionare il primo test non riuscito al termine dell'esecuzione del test.
  4. Le icone di stato del test indicano se un test contiene un errore, è stato ignorato, non riuscito, è in corso, è stato superato, è stato messo in pausa, è stato chiuso o non è stato eseguito.
  5. Fai clic con il pulsante destro del mouse su una riga della visualizzazione ad albero per aprire un menu contestuale che ti consente di eseguire i test in modalità di debug, aprire il file di codice sorgente del test o passare alla riga del codice sorgente da testare.

Analizzare gli errori nei test

Quando uno o più test non hanno esito positivo, la finestra dei risultati mostra 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 che tu possa confrontarlo. Il link Fai clic per vedere la differenza apre un visualizzatore delle differenze in cui puoi vedere i risultati uno accanto all'altro.

Scopri di più

In questa pagina vengono spiegati i passaggi di base da seguire per creare ed eseguire il primo test con Android Studio. Puoi anche scegliere di eseguire test dalla riga di comando. Puoi anche consultare la documentazione di IntelliJ sui test. Per ulteriori informazioni su come configurare i test quando crei una suite di test più grande, consulta Configurazione dei test avanzati.