Questo documento descrive come eseguire i test direttamente dalla riga di comando. Questo documento presuppone che tu sappia già come creare un'app per Android e scrivere test per la tua app. Per ulteriori informazioni su come creare test vedi Testare le app su Android.
Quando crei la tua app utilizzando il sistema di creazione di Gradle, il riquadro Android Gradle consente di eseguire test dal tuo Gradle un progetto utilizzando la riga di comando. Per un controllo più granulare, scegli di eseguire i test tramite un Android Debug Bridge (adb). Questo può essere utile quando si eseguono test in una di integrazione continua.
Per scoprire come eseguire test con strumenti automatizzati dalla riga di comando utilizzando dispositivi virtuali gestiti da Gradle, vedi Scalare i test con Gradle Dispositivi gestiti.
Esegui test con Gradle
Il plug-in Android per Gradle consente di eseguire test dal progetto Gradle utilizzando dall'interfaccia a riga di comando.
La tabella seguente riassume come eseguire i test con Gradle:
Tipo di test delle unità | Comando da eseguire | Località del risultato del test |
---|---|---|
Test delle unità locali |
Esegui l'attività test :
|
File dei risultati del test HTML:path_to_your_project/module_name/build/reports/tests/
.
File dei risultati del test XML: |
Test delle unità strumentate |
Esegui l'attività connectedAndroidTest :
|
File dei risultati del test HTML:path_to_your_project/module_name/build/reports/androidTests/connected/
.
File dei risultati del test XML: |
Supporti Gradle
abbreviazioni dei nomi delle attività.
Ad esempio, puoi avviare l'attività connectedAndroidTest
tramite
inserendo il seguente comando:
./gradlew cAT
Puoi anche scegliere di eseguire le attività Gradle check
e connectedCheck
. Questi
per le attività eseguono rispettivamente i test locali o strumentati,
includere altri controlli aggiunti da altri plug-in Gradle.
Eseguire test su un modulo
Le attività test
e connectedAndroidTest
eseguono test su ciascun modulo nel tuo
progetto. Puoi eseguire test su un modulo specifico
far precedere l'attività test
o connectedAndroidTest
con il nome del modulo e un
I due punti (:). Ad esempio, il seguente comando esegue test instrumentati solo
il modulo mylibrary
:
./gradlew mylibrary:connectedAndroidTest
Eseguire test su una variante di build
Le attività test
e connectedAndroidTest
eseguono test su ciascuna
crea una variante nel tuo progetto. Puoi scegliere come target
una variante di build specifica utilizzando la seguente sintassi:
- Per i test delle unità locali:
./gradlew testVariantNameUnitTest
- Per i test instrumentati:
./gradlew connectedVariantNameAndroidTest
Eseguire classi o metodi di test specifici
Quando esegui test delle unità locali, Gradle ti consente di scegliere come target test specifici utilizzando
il flag --tests
. Ad esempio, il comando seguente esegue solo
sampleTestMethod
test per la variante di build specificata. Per scoprire di più su
usando il flag --tests
, leggi la documentazione di Gradle
filtro di verifica.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
Esegui test con ADB
Quando esegui test dalla riga di comando con Android Debug Bridge (adb), sono disponibili altre opzioni per scegliere i test da eseguire rispetto a qualsiasi altro metodo. Puoi selezionare singole metodi di test, filtrare i test in base a un'annotazione personalizzata o specificare le opzioni di CPU e memoria disponibili. Poiché l'esecuzione del test è interamente controllata dalla riga di comando, puoi personalizzare i test con gli script shell in vari modi.
Per eseguire un test dalla riga di comando, esegui adb shell
per avviare una riga di comando
shell sul tuo dispositivo o nell'emulatore. All'interno della shell puoi interagire
gestione attività
usando il comando am
e il suo sottocomando instrument
per eseguire i test.
Come scorciatoia, puoi avviare una shell adb, chiamare am instrument
e specificare
tutti i flag della riga di comando
su un'unica riga di input. La shell si apre sul dispositivo oppure
un emulatore, esegue i test, produce un output, quindi torna alla riga di comando
sul computer.
Per eseguire un test con am instrument
:
- Crea o ricrea l'applicazione principale e un pacchetto di test.
- Installa il pacchetto di test e la piattaforma principale file del pacchetto Android (file APK) per il tuo dispositivo Android corrente oppure un emulatore.
Nella riga di comando, inserisci:
adb shell am instrument -w <test_package_name>/<runner_class>
Dove
<test_package_name>
è il nome del pacchetto Android del tuo test e<runner_class>
è il nome della classe Android Test Runner che stai utilizzando. Il nome del pacchetto Android è il valore del campo attributo pacchetto nel file manifest del pacchetto di test (AndroidManifest.xml
).Il corso Android Test Runner è solitamente
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
I risultati del test vengono visualizzati in STDOUT
.
bandiere strumentali
Per trovare un elenco di tutti i flag da usare con il comando am instrument
:
esegui adb shell am help
. Alcune segnalazioni importanti sono descritte nel
tabella seguente:
Segnala | Valore | Descrizione |
---|---|---|
-w
|
(nessuno) |
Obbliga am instrument ad attendere fino alla strumentazione
termina prima di terminare se stesso. In questo modo
si aprirà fino al termine dei test. Questo flag è obbligatorio per
vedere i risultati dei test.
|
-r
|
(nessuno) |
Restituisce i risultati in formato non elaborato. Usa questo flag quando vuoi
raccolgono misurazioni delle prestazioni in modo che non siano formattati come
i risultati del test. Questo flag è progettato per essere utilizzato insieme al flag
-e perf true (documento
am instrument options (opzioni am instrument options).
|
-e
|
<test_options>
|
Fornisce opzioni di test come coppie chiave-valore. La
Lo strumento am instrument li trasmette all'elemento specificato
strumentazione di classe utilizzando
onCreate()
. Puoi specificare più occorrenze di
-e <test_options> . Le chiavi e i valori sono
descritti nei
am instrument options (Opzioni strumentali). Puoi
usa solo queste coppie chiave-valore
AndroidJUnitRunner
o con InstrumentationTestRunner
e le relative sottoclassi. L'utilizzo con qualsiasi altro corso non ha alcun effetto.
|
--no-hidden-api-checks
|
(nessuno) | Disabilita le limitazioni relative all'uso di API nascoste. Per ulteriori informazioni informazioni su cosa sono le API nascoste e su come questo può influire sulla tua app, leggere Restrizioni relative alle interfacce non SDK. |
opzioni am instrument
Lo strumento am instrument
passa le opzioni di test
AndroidJUnitRunner
o InstrumentationTestRunner
sotto forma di coppie chiave-valore, utilizzando il flag -e
, con la seguente sintassi:
-e <key> <value>
Alcune chiavi accettano più valori. Devi specificare più valori in un
elenco separato da virgole. Ad esempio, questa chiamata
AndroidJUnitRunner
fornisce più valori per la chiave package
:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
La tabella seguente elenca le coppie chiave-valore che puoi utilizzare con il runner del test:
Chiave | Valore | Descrizione |
---|---|---|
package
|
<Java_package_name>
|
Il nome completo del pacchetto Java per uno dei pacchetti nell'applicazione di test. Qualsiasi classe di scenario di test che utilizza questo eseguito il nome del pacchetto. Tieni presente che non si tratta di una Nome del pacchetto Android; un pacchetto di test include Il nome del pacchetto Android, ma potrebbe contenere diversi pacchetti Java. |
class |
<class_name> |
Il nome completo della classe Java per uno degli scenari di test . Viene eseguita solo questa classe dello scenario di test. |
<class_name>#method name |
Un nome completo della classe dello scenario di test e uno dei suoi metodi. Solo questo metodo viene eseguito. Osserva il marcatore hash (#) tra la classe e il nome del metodo. | |
func |
true |
Esegue tutte le classi di test che estendono
InstrumentationTestCase .
|
unit |
true |
Esegue tutte le classi di test che non estendono
InstrumentationTestCase o
PerformanceTestCase .
|
size |
[small | medium | large ]
|
Esegue un metodo di test annotato per dimensione. Le annotazioni sono
@SmallTest , @MediumTest e
@LargeTest .
|
perf |
true |
Esegue tutte le classi di test che implementano
PerformanceTestCase .
Quando utilizzi questa opzione, specifica il flag -r per
am instrument per mantenere l'output in formato non elaborato
e non riformattati come risultati del test.
|
debug |
true |
Esegue test in modalità di debug. |
log |
true |
Carica e registra tutti i test specificati, ma non li esegue. Il test
vengono visualizzate in STDOUT . Utilizza questo pulsante per verificare
combinazioni di altri filtri e specifiche di test.
|
emma |
true |
Esegue un'analisi della copertura del codice EMMA e scrive l'output in
/data/<app_package>/coverage.ec sul dispositivo. A
sostituisci la posizione del file, usa la chiave coverageFile
descritto nella voce seguente.
Nota: questa opzione richiede uno strumento EMMA
dell'applicazione di test, che puoi generare
|
coverageFile |
<filename> |
Sostituisce la posizione predefinita del file di copertura EMMA sulla
dispositivo. Specifica questo valore come percorso e nome file in formato UNIX.
Il nome file predefinito è descritto nella voce relativa al parametro
emma chiave.
|
Quando utilizzi il flag -e
, tieni presente quanto segue:
am instrument
di chiamateonCreate(Bundle)
con unaBundle
contenente la coppia chiave-valore in coppia.- Il tasto
package
ha la precedenza sulla chiaveclass
. Se specifichi e specificare separatamente una classe all'interno del pacchetto, Android esegue tutti i test nel pacchetto e ignora la chiave della classe. - La chiave
func
e la chiaveunit
si escludono a vicenda.
Esempi di utilizzo
Le sezioni seguenti forniscono esempi di utilizzo di am instrument
per l'esecuzione di test.
Si basano sulla seguente struttura:
- Il pacchetto di test ha il nome del pacchetto Android
com.android.demo.app.tests
. - Due classi di test con strumentazione:
TestClass1
, che contiene il metodo di testtestMethod1
.TestClass2
, che contiene i metodi di testtestMethod2
etestMethod3
.
- L'esecutore del test è
AndroidJUnitRunner
Esegui l'intero pacchetto di test
Per eseguire tutte le classi di test nel pacchetto di test, inserisci:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Esegui tutti i test in una classe di scenario di test
Per eseguire tutti i test nella classe TestClass1
, inserisci:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Seleziona un sottoinsieme di test
Per eseguire tutti i test nella classe TestClass1
e nel metodo testMethod3
in TestClass2
,
inserisci:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Puoi trovare altri casi d'uso nel
AndroidJUnitRunner
Riferimento API.