Android Studio è progettato per semplificare i test. Contiene molte funzionalità che semplificano la creazione, l'esecuzione e l'analisi dei test. Puoi configurare test da eseguire sulla tua macchina locale o test strumentali eseguiti su un dispositivo. Puoi facilmente eseguire 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 del test.
Questa pagina spiega come gestire i test in Android Studio. Per informazioni su come scrivere test automatici di Android, consulta la pagina Testare le app su Android.
Tipi di test e località
La località dei test dipende dal tipo di test che scrivi. I progetti Android hanno directory di codice sorgente predefinite per i test delle unità locali e i test strumentati.
I test delle unità locali 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 del framework Android o quando puoi creare test duplicati per le dipendenze del framework Android.
Per ulteriori informazioni su come scrivere test delle unità locali, consulta Creare test delle unità locali.
I test strumentali si trovano in $module-name/src/androidTest/java/
.
Questi test vengono eseguiti su un emulatore o un dispositivo hardware. Hanno accesso alle API Instrumentation
che ti permettono di accedere a informazioni, ad esempio la classe Context
, nell'app che stai testando e ti permettono 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 tua versione all'indirizzo $module-name/src/androidTest/AndroidManifest.xml
, che verrà unita al manifest generato. Utilizza i test strumentali quando scrivi test di integrazione e UI funzionali per automatizzare l'interazione degli utenti o quando i test hanno dipendenze Android per le quali non puoi creare test raddoppiati.
Per ulteriori informazioni su come scrivere test con strumentazione, consulta Creare test strumentati e Automatizzare i test dell'interfaccia utente.
Puoi inserire i test in directory specifiche delle varianti di build per testare solo varianti specifiche della build. Ad esempio, puoi eseguire alcuni test delle unità locali in $module-name/src/testMyFlavor/java/
in modo che 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 strumentato per una variante di build.
Quando crei un nuovo progetto o aggiungi un modulo dell'app, Android Studio crea i set di origini di test elencati in precedenza e include in ciascuno un file di test di esempio. Puoi vederle nella finestra Progetto, come mostrato nella figura 2.
Figura 2. I test strumentati (1) del tuo progetto e i test JVM locali (2) sono visibili nella visualizzazione Progetto (a sinistra) o Android (a destra).
Crea nuovi test
Puoi aggiungere un nuovo test per una classe o un metodo specifico direttamente dal codice sorgente seguendo questi passaggi:
- Apri il file sorgente contenente il codice che vuoi testare.
- Posiziona il cursore nel nome della classe o del metodo che vuoi testare e premi Ctrl + Maiusc + T (Comando + Maiusc + T su macOS).
- Nella finestra popup visualizzata, fai clic su Crea nuovo test...
- Nella finestra di dialogo Crea test, scegli JUnit4, modifica i campi e i metodi che vuoi generare e fai clic su OK.
- 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 strumentale o test per un test delle unità locali. Fai clic su OK.
In alternativa, puoi creare un file di test generico nel set di origini di test appropriato, come segue:
- Nella finestra Progetto a sinistra, fai clic sul menu a discesa e seleziona la visualizzazione Android.
- Fai clic con il pulsante 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).
- 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 strumentale o test per un test delle unità locali. Fai clic su OK.
- 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 Creazione di test locali e Creazione di test strumentati per le dipendenze corrette.
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 pulsante 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.
- Fai clic con il pulsante destro del mouse su una directory o un file e fai clic su Esegui
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 di test e utilizza la scorciatoia Ctrl+Maiusc+R.
- Premi l'icona Esegui test
I tuoi 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 di 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, ad esempio l'esecuzione della strumentazione e le opzioni di deployment, puoi modificare la configurazione dell'esecuzione nella finestra di dialogo Esegui/configura configurazioni di 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 di Gradle dell'esecutore di test strumentato di Android per eseguire test strumentati. Utilizzando lo stesso esecutore del test, è probabile che i risultati siano coerenti sia che venga eseguito con AGP dalla riga di comando, ad esempio su un server di integrazione continua o da Android Studio.
Figura 3. L'elemento di esecuzione del test Unified Gradle.
Le versioni precedenti di Android Studio utilizzano l'esecutore di test strumentato IntelliJ per Android anziché l'esecutore di test strumentato per Android di Gradle. Pertanto, se non utilizzi la versione più recente di Android Studio, a seconda che li esegui da Android Studio o dalla riga di comando utilizzando il plug-in Gradle, potresti vedere risultati diversi, come i test superati con un runner e i test non riusciti su un altro.
Figura 4. Utenti che possono eseguire test discreti nelle versioni precedenti di Android Studio.
Se hai già salvato configurazioni di test strumentate nel progetto, utilizzano 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.
Quando esegui i test strumentati, puoi confermare che Android Studio stia utilizzando l'esecuzione del test Gradle ispezionando l'output del test nella matrice di test per l'output dell'attività Gradle.
Disattiva l'esecuzione del test Gradle unificato
Per impostazione predefinita, Android Studio Bumblebee utilizza Gradle per eseguire i test di strumentazione. Se riscontri problemi, puoi disattivare questo comportamento come indicato di seguito:
- Su macOS, seleziona File > Impostazioni > Creazione, Esecuzione, Implementazione > Test (oppure Android Studio > Preferenze > Creazione, Esecuzione, Implementazione > Test).
- Deseleziona la casella accanto a Esegui test strumentali Android utilizzando Gradle e fai clic su OK.
Quando esegui test al di fuori di Android Studio, puoi ripristinare i comportamenti precedenti anche in uno dei seguenti modi:
- Utilizza il seguente parametro della riga di comando:
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
- Aggiungi il seguente parametro al file
gradle.properties
del tuo progetto:android.experimental.androidTest.useUnifiedTestPlatform=false
Per aiutarci a risolvere eventuali problemi, segnala un bug.
Eseguire su più dispositivi in parallelo
I test strumentali per impostazione predefinita vengono eseguiti su un emulatore o dispositivo fisico. Se vuoi vedere il comportamento dei test su un gruppo più ampio di dispositivi, puoi selezionarne altri seguendo questi passaggi:
Prima di eseguire i test, apri il menu a discesa del dispositivo di destinazione e seleziona Seleziona più dispositivi....
Figura 6. Menu a discesa Seleziona più dispositivi.
Seleziona i dispositivi che ti interessano e fai clic su OK.
Assicurati che il testo nel menu a discesa di destinazione sia impostato su Più dispositivi e fai clic su Esegui
.
La finestra dello strumento Matrice di test mostra i risultati del test per ogni configurazione di dispositivo selezionata.
Figura 7. Risultati del test nella finestra dello strumento Matrice di test.
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 la tua app contemporaneamente su molti dispositivi Android e configurazioni di dispositivi 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 i log di test e includono i dettagli di eventuali errori dell'app.
Per iniziare a utilizzare Firebase Test Lab, devi:
- Crea un Account Google, se non ne hai già uno.
- Nella Console Firebase, fai clic su Crea nuovo progetto.
Android Studio fornisce strumenti integrati che consentono di configurare il modo in cui eseguire il deployment dei test in Firebase Test Lab. Dopo aver creato un progetto Firebase, puoi creare una configurazione di test ed eseguire i test:
- Fai clic su Esegui > Modifica configurazioni nel menu principale.
- Fai clic su Aggiungi nuova configurazione
e seleziona Test strumentali Android.
- Inserisci o seleziona i dettagli del test, ad esempio il nome, il tipo di modulo, il tipo di test e la classe di test.
- Dal menu a discesa Destinazione in Opzioni di destinazione del deployment, seleziona Matrice del dispositivo di Firebase Test Lab.
- Se non hai eseguito l'accesso, fai clic su Accedi con Google e consenti ad Android Studio di accedere al tuo account.
- Accanto a Progetto cloud, seleziona il progetto Firebase dall'elenco.
- 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.
- Fai clic su OK nella finestra di dialogo Esegui/configura configurazioni di debug per uscire.
- Esegui i test facendo clic su Esegui
.
Figura 8. Creazione di una configurazione di test per Firebase Test Lab.
Analizzare i risultati dei test
Quando Firebase Test Lab completa l'esecuzione dei test, viene visualizzata la finestra Esegui in cui sono mostrati i risultati, come mostrato nella Figura 9. Potrebbe essere necessario fare clic su Mostra Superato per visualizzare tutti i test eseguiti.
Figura 9. I risultati dei test strumentati con 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 la copertura dei 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 dei test per determinare se hai testato in modo adeguato elementi, classi, metodi e righe di codice che compongono la tua app.
Per eseguire test con copertura, segui gli stessi passaggi descritti in
Esegui test, ma invece di fare clic su Esegui , fai clic su Esegui
nome-test con copertura
. Nella finestra Progetto, questa opzione potrebbe essere nascosta dietro Più 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 della 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:
- Utilizza la barra degli strumenti di esecuzione per ripetere il test corrente, interromperlo, ripetere i test non riusciti (non mostrato perché è disponibile solo per i test delle unità), mettere in pausa l'output ed eseguire il dump dei thread.
- Utilizza la barra degli strumenti dei test per filtrare e ordinare i risultati. Puoi anche espandere o comprimere i nodi, mostrare la copertura del test e importare o esportare i risultati dei test.
- Fai clic sul menu contestuale per monitorare il test in esecuzione, mostrare le statistiche incorporate, 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.
- Le icone di stato del test indicano se un test contiene un errore, è stato ignorato, non riuscito, è in corso, è stato superato, è in pausa, è stato terminato o non è stato eseguito.
- Fai clic con il tasto destro del mouse su una riga della 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 del codice sorgente sottoposto a test.
Analizza gli errori di test
Quando uno o più test hanno esito negativo, 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 da poterli confrontare. Il link Fai clic per vedere la differenza apre un visualizzatore delle differenze in cui puoi vedere i risultati affiancati.
Scopri di più
In questa pagina sono riportati i passaggi di base da seguire per creare ed eseguire il tuo 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.