In diesem Dokument wird beschrieben, wie Sie Tests direkt über die Befehlszeile ausführen. Dieses wird vorausgesetzt, dass Sie bereits wissen, wie Sie eine Android-App erstellen und Schreiben von Tests für Ihre App. Weitere Informationen zum Erstellen von Tests für Ihre finden Sie unter Apps unter Android testen.
Wenn Sie Ihre App mit dem Gradle-Build-System erstellen, gibt der Android-Gradle-Plug-in Plug-in können Sie Tests über Ihren Gradle-Plug-in Projekt über die Befehlszeile ausführen. Für eine genauere Kontrolle können Sie Führen Sie Ihre Tests über eine Android Debug Bridge (adb)-Shell. Dies kann nützlich sein, wenn Tests in einem Continuous Integration-Umgebung.
Erfahren Sie, wie Sie automatisierte instrumentierte Tests über die Befehlszeile mit virtuelle Geräte, die Gradle für Sie verwaltet, siehe Tests mit Gradle skalieren Verwaltete Geräte
Tests mit Gradle ausführen
Mit dem Android-Gradle-Plug-in kannst du Tests in deinem Gradle-Projekt mithilfe der Befehlszeile.
In der folgenden Tabelle wird zusammengefasst, wie Sie Ihre Tests mit Gradle ausführen:
Einheitentesttyp | Auszuführender Befehl | Speicherort des Testergebnisses |
---|---|---|
Test lokaler Einheiten |
Führen Sie die Aufgabe test aus:
|
HTML-Testergebnisdateien:path_to_your_project/module_name/build/reports/tests/
-Verzeichnis.
XML-Testergebnisdateien: |
Instrumentierter Einheitentest |
Führen Sie die Aufgabe connectedAndroidTest aus:
|
HTML-Testergebnisdateien:path_to_your_project/module_name/build/reports/androidTests/connected/
-Verzeichnis.
XML-Testergebnisdateien: |
Gradle unterstützt
Abkürzungen für Aufgabennamen.
Zum Beispiel können Sie die Aufgabe connectedAndroidTest
initiieren, indem Sie
und geben Sie den folgenden Befehl ein:
./gradlew cAT
Sie können auch die Gradle-Aufgaben check
und connectedCheck
ausführen. Diese
werden für Aufgaben lokale bzw. instrumentierte Tests ausgeführt.
Schließen Sie weitere Prüfungen ein, die von anderen Gradle-Plug-ins hinzugefügt wurden.
Tests für ein Modul ausführen
Mit den Aufgaben test
und connectedAndroidTest
werden Tests für jedes Modul in Ihrem
Projekt arbeiten. Sie können Tests für ein bestimmtes Modul
der Aufgabe test
oder connectedAndroidTest
den Modulnamen und einen
Doppelpunkt (:). Mit dem folgenden Befehl werden beispielsweise instrumentierte Tests nur für
das Modul mylibrary
:
./gradlew mylibrary:connectedAndroidTest
Tests für eine Build-Variante ausführen
Die Aufgaben test
und connectedAndroidTest
führen jeweils Tests aus
Build-Variante in Ihrem Projekt. Sie können ein Targeting auf
bestimmte Build-Variante mit der folgenden Syntax:
- Für lokale Einheitentests:
./gradlew testVariantNameUnitTest
- Für instrumentierte Tests:
./gradlew connectedVariantNameAndroidTest
Bestimmte Testmethoden oder -klassen ausführen
Beim Ausführen lokaler Einheitentests können Sie mit Gradle bestimmte Tests mithilfe von
Das Flag --tests
. Der folgende Befehl führt beispielsweise nur den
sampleTestMethod
Tests für die angegebene Build-Variante. Weitere Informationen über
mit dem Flag --tests
können Sie die Gradle-Dokumentation
Testfilter.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
Tests mit ADB durchführen
Wenn Sie über die Befehlszeile Tests mit Android Debug Bridge ausführen (ADB) gibt es weitere Optionen für die auszuführenden Tests auswählen als bei jeder anderen Methode. Sie können einzelne Personen Testmethoden, filtern Sie Tests gemäß einer benutzerdefinierten Annotation oder geben Sie Tests an Optionen. Da der Testlauf vollständig über die Befehlszeile gesteuert wird, können Sie Ihre Tests mit Shell-Scripts auf verschiedene Arten anpassen.
Wenn Sie einen Test über die Befehlszeile ausführen möchten, führen Sie adb shell
aus, um eine Befehlszeile zu starten
Shell auf Ihrem Gerät oder Emulator. Innerhalb dieser Shell können Sie mit dem
Aktivitätsmanager
Verwenden Sie den Befehl am
und den Unterbefehl instrument
, um Ihre Tests auszuführen.
Sie können aber auch eine ADB-Shell starten, am instrument
aufrufen und
Befehlszeilen-Flags in einer einzigen Eingabezeile. Die Shell wird auf dem Gerät oder
Emulatoren, führt Ihre Tests aus, generiert eine Ausgabe und kehrt dann zur Befehlszeile zurück
auf Ihrem Computer.
So führen Sie einen Test mit am instrument
aus:
- Ihre Hauptanwendung erstellen oder neu erstellen und Testpaket.
- Installieren Sie das Testpaket und die Hauptversion. Android-App-Paketdateien (APK-Dateien) auf Ihr aktuelles Android-Gerät oder Emulator.
Geben Sie in der Befehlszeile Folgendes ein:
adb shell am instrument -w <test_package_name>/<runner_class>
Dabei ist
<test_package_name>
der Android-Paketname Ihres Tests. App und<runner_class>
ist der Name der Android-Test-Runner-Klasse. die Sie verwenden. Der Android-Paketname ist der Wert des Manifest-Elements Paketattribut in der Manifestdatei deines Testpakets (AndroidManifest.xml
) angegeben.Die Android Test Runner-Klasse ist normalerweise
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
Deine Testergebnisse werden auf STDOUT
angezeigt.
Flaggen für Instrumente
So rufen Sie eine Liste aller Flags auf, die für den Befehl am instrument
verwendet werden sollen:
führen Sie adb shell am help
aus. Einige wichtige Flags werden in den
folgende Tabelle:
Melden | Wert | Beschreibung |
---|---|---|
-w
|
(keine) |
Erzwingt am instrument , auf die Instrumentierung zu warten
endet, bevor er sich selbst kündigt. Dadurch bleibt die
bis die Tests beendet sind. Dieses Flag ist erforderlich, um
um die Ergebnisse Ihrer Tests zu sehen.
|
-r
|
(keine) |
Gibt die Ergebnisse im Rohformat aus. Verwenden Sie dieses Flag, wenn Sie
zu erfassen, sodass sie nicht als
Testergebnissen. Dieses Flag ist für die Verwendung mit dem Flag vorgesehen.
-e perf true (dokumentiert im
am instrument options) an.
|
-e
|
<test_options>
|
Stellt Testoptionen als Schlüssel/Wert-Paare bereit. Die
Das am instrument -Tool übergibt diese an die angegebene
Instrumentierungsklasse mithilfe ihrer
onCreate()
. Sie können angeben, dass
-e <test_options> Die Schlüssel und Werte sind
in den
am instrument options auf. Sie können
diese Schlüssel/Wert-Paare nur
AndroidJUnitRunner
oder mit InstrumentationTestRunner
und ihre abgeleiteten Klassen. Ihre Verwendung mit einer anderen Klasse hat keine Auswirkungen.
|
--no-hidden-api-checks
|
(keine) | Deaktiviert die Einschränkungen für die Verwendung versteckter APIs. Weitere Informationen Informationen dazu, was verborgene APIs sind und wie sich das auf Ihre App, lesen Einschränkungen für Nicht-SDK-Schnittstellen: |
AM Instrument-Optionen
Das am instrument
-Tool übergibt die Testoptionen an
AndroidJUnitRunner
oder InstrumentationTestRunner
in Form von Schlüssel/Wert-Paaren unter Verwendung des Flags -e
und der folgenden Syntax:
-e <key> <value>
Für einige Schlüssel sind mehrere Werte zulässig. Sie geben mehrere Werte in einem
kommagetrennte Liste. Dieser Aufruf von
AndroidJUnitRunner
stellt mehrere Werte für den Schlüssel package
bereit:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
In der folgenden Tabelle sind die Schlüssel/Wert-Paare aufgeführt, die Sie mit dem Test-Runner verwenden können:
Schlüssel | Wert | Beschreibung |
---|---|---|
package
|
<Java_package_name>
|
Der voll qualifizierte Java-Paketname für einen der Pakete in der Testanwendung. Jede Testlaufklasse, die diese Methode verwendet Paketname ausgeführt wird. Beachten Sie, dass dies kein Paketname Android enthält ein Testpaket Android-Paketname, kann aber mehrere Java-Pakete enthalten |
class |
<class_name> |
Der voll qualifizierte Name der Java-Klasse für einen der Testfälle Klassen. Nur diese Testlaufklasse wird ausgeführt. |
<class_name>#method name |
Ein voll qualifizierter Name der Testlaufklasse und eine ihrer Methoden. Nur wird diese Methode ausgeführt. Achten Sie auf das Rautezeichen (#) zwischen den Klassen und den Namen der Methode. | |
func |
true |
Führt alle Testklassen aus, die
InstrumentationTestCase
|
unit |
true |
Führt alle Testklassen aus, die keine
InstrumentationTestCase oder
PerformanceTestCase .
|
size |
[small | medium | large ]
|
Führt eine mit der Größe annotierte Testmethode aus. Die Anmerkungen sind
@SmallTest , @MediumTest und
@LargeTest
|
perf |
true |
Führt alle Testklassen aus, die implementieren
PerformanceTestCase
Wenn Sie diese Option verwenden, geben Sie das Flag -r für
am instrument , damit die Ausgabe im Rohformat beibehalten wird
und nicht als Testergebnisse neu formatiert werden.
|
debug |
true |
Führt Tests im Debug-Modus aus. |
log |
true |
Lädt und protokolliert alle angegebenen Tests, führt sie aber nicht aus. Der Test
Informationen erscheinen in STDOUT . Hiermit bestätigen
Kombinationen anderer Filter und Testspezifikationen.
|
emma |
true |
Führt eine Analyse der EMMA-Codeabdeckung durch und schreibt die Ausgabe in
/data/<app_package>/coverage.ec auf dem Gerät. Bis
Dateispeicherort überschreiben, Schlüssel coverageFile verwenden
die im folgenden Eintrag beschrieben wird.
Hinweis:Für diese Option ist ein EMMA-instrumentiert.
der Testanwendung, die Sie mit dem
Ziel: |
coverageFile |
<filename> |
Überschreibt den Standardspeicherort der EMMA-Abdeckungsdatei im
. Geben Sie diesen Wert als Pfad und Dateiname im UNIX-Format an.
Der Standarddateiname wird im Eintrag für die
emma -Schlüssel.
|
Beachten Sie Folgendes, wenn Sie das Flag -e
verwenden:
am instrument
-AufrufeonCreate(Bundle)
mit einemBundle
, der das Schlüssel/Wert-Paar Paare.- Der Schlüssel
package
hat Vorrang vor dem Schlüsselclass
. Wenn Sie eine Paket und geben dann separat eine Klasse in diesem Paket an, führt alle Tests im Paket aus und ignoriert den Klassenschlüssel. - Der Schlüssel
func
und der Schlüsselunit
schließen sich gegenseitig aus.
Beispiele für die Verwendung
Die folgenden Abschnitte enthalten Beispiele für die Verwendung von am instrument
zum Ausführen von Tests.
Sie basieren auf der folgenden Struktur:
- Das Testpaket hat den Android-Paketnamen
com.android.demo.app.tests
. - Zwei instrumentierte Testklassen:
<ph type="x-smartling-placeholder">
- </ph>
TestClass1
, die die TestmethodetestMethod1
enthält.TestClass2
mit den TestmethodentestMethod2
undtestMethod3
.
- Der Test-Runner ist
AndroidJUnitRunner
Gesamtes Testpaket ausführen
Um alle Testklassen im Testpaket auszuführen, geben Sie Folgendes ein:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Alle Tests in einer Testlaufklasse ausführen
Um alle Tests in der Klasse TestClass1
auszuführen, geben Sie Folgendes ein:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Teilmenge von Tests auswählen
So führen Sie alle Tests in der Klasse TestClass1
und der Methode testMethod3
in TestClass2
aus:
Geben Sie Folgendes ein:
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
Weitere Anwendungsfälle finden Sie in der
AndroidJUnitRunner
API-Referenz