In Android Studio testen

Android Studio wurde entwickelt, um das Testen zu vereinfachen. Sie enthält viele Funktionen, die das Erstellen, Ausführen und Analysieren von Tests vereinfachen. Sie können Tests einrichten, die auf Ihrem lokalen Computer oder instrumentierte Tests auf einem Gerät ausgeführt werden. Sie können ganz einfach einen einzelnen Test oder eine bestimmte Gruppe von Tests auf einem oder mehreren Geräten ausführen. Die Testergebnisse werden direkt in Android Studio angezeigt.

Abbildung 1: Android Studio mit Übersicht der Testergebnisse.

Auf dieser Seite erfahren Sie, wie Sie Tests in Android Studio verwalten. Informationen zum Schreiben automatisierter Android-Tests finden Sie unter Apps auf Android-Geräten testen.

Testtypen und -orte

Der Speicherort Ihrer Tests hängt von der Art des geschriebenen Tests ab. Android-Projekte haben Standard-Quellcodeverzeichnisse für lokale Einheitentests und instrumentierte Tests.

Lokale Einheitentests finden Sie unter module-name/src/test/java/. Dies sind Tests, die auf der lokalen Java Virtual Machine (JVM) Ihrer Maschine ausgeführt werden. Mit diesen Tests können Sie die Ausführungszeit minimieren, wenn Ihre Tests keine Android-Framework-Abhängigkeiten haben oder wenn Sie Test-Doubles für die Android-Framework-Abhängigkeiten erstellen können. Weitere Informationen zum Schreiben lokaler Einheitentests finden Sie unter Lokale Einheitentests erstellen.

Instrumentierte Tests finden Sie unter $module-name/src/androidTest/java/. Diese Tests werden auf einem Hardwaregerät oder Emulator ausgeführt. Sie haben Zugriff auf Instrumentation-APIs, über die Sie auf Informationen wie die Context-Klasse in der App zugreifen können, die Sie testen, und mit denen Sie die zu testende App über Ihren Testcode steuern können. Instrumentierte Tests werden in ein separates APK eingebunden, sodass sie eine eigene AndroidManifest.xml-Datei haben. Diese Datei wird automatisch generiert. Sie können aber auch Ihre eigene Version unter $module-name/src/androidTest/AndroidManifest.xml erstellen, die mit dem generierten Manifest zusammengeführt wird. Verwenden Sie instrumentierte Tests, wenn Sie Integrations- und funktionale UI-Tests zur Automatisierung von Nutzerinteraktionen schreiben oder wenn Ihre Tests Android-Abhängigkeiten haben, für die Sie keine Test-Doubles erstellen können. Weitere Informationen zum Schreiben von instrumentierten Tests finden Sie unter Instrumentierte Tests erstellen und UI-Tests automatisieren.

Sie können Ihre Tests in spezifische Verzeichnisse für Build-Varianten einfügen, um nur bestimmte Build-Varianten zu testen. Sie könnten beispielsweise einige lokale Einheitentests in $module-name/src/testMyFlavor/java/ platzieren, damit die Tests auf Ihre Anwendung ausgerichtet sind, die mit dem Quellcode dieser Geschmacksrichtung erstellt wurde. Weitere Informationen zum Erstellen dieser maßgeschneiderten Tests finden Sie unter Instrumentierten Test für eine Build-Variante erstellen.

Wenn Sie ein neues Projekt erstellen oder ein App-Modul hinzufügen, erstellt Android Studio die zuvor aufgeführten Testquellsätze und fügt jedem eine beispielhafte Testdatei hinzu. Sie können sie im Fenster Project (Projekt) sehen (siehe Abbildung 2).

Abbildung 2: Die (1) instrumentierten Tests und (2) lokalen JVM-Tests Ihres Projekts sind entweder in der Projektansicht (links) oder in der Android-Ansicht (rechts) sichtbar.

Neue Tests erstellen

Mit den folgenden Schritten können Sie einen neuen Test für eine bestimmte Klasse oder Methode direkt aus dem Quellcode hinzufügen:

  1. Öffnen Sie die Quelldatei, die den zu testenden Code enthält.
  2. Setzen Sie den Cursor auf den Namen der Klasse oder Methode, die Sie testen möchten, und drücken Sie Strg + Umschalttaste + T (Befehlstaste + Umschalttaste + T unter macOS).
  3. Klicken Sie im angezeigten Pop-up auf Neuen Test erstellen...
  4. Wählen Sie im Dialogfeld Test erstellen die Option JUnit4 aus, bearbeiten Sie die Felder und Methoden, die Sie generieren möchten, und klicken Sie dann auf OK.
  5. Klicken Sie im Dialogfeld Zielverzeichnis auswählen auf die Quellgruppe, die dem Testtyp entspricht, den Sie erstellen möchten: androidTest für einen instrumentierten Test oder test für einen lokalen Einheitentest. Klicken Sie dann auf OK.

Alternativ können Sie wie folgt eine generische Testdatei in der entsprechenden Testquelle erstellen:

  1. Klicken Sie links im Fenster Projekt auf das Drop-down-Menü und wählen Sie die Ansicht Android aus.
  2. Klicken Sie mit der rechten Maustaste auf das Verzeichnis java und wählen Sie Neu > Java-Klasse oder Neu > Kotlin-Klasse/Datei aus. Alternativ können Sie das Verzeichnis java auswählen und die Tastenkombination Strg + N (Befehlstaste + N unter macOS) verwenden.
  3. Klicken Sie im Dialogfeld Zielverzeichnis auswählen auf die Quellgruppe, die dem Testtyp entspricht, den Sie erstellen möchten: androidTest für einen instrumentierten Test oder test für einen lokalen Einheitentest. Klicken Sie dann auf OK.
  4. Benennen Sie die Datei und klicken Sie dann auf OK.

Wenn Ihre Anwendung nach dem Hinzufügen eines Tests nicht kompiliert wird, prüfen Sie, ob Sie die richtigen Abhängigkeiten für die Testbibliothek eingerichtet haben. Informationen zu den korrekten Abhängigkeiten finden Sie unter Lokale Tests erstellen und Instrumentierte Tests erstellen.

Tests ausführen

Bevor Sie Tests ausführen, müssen Sie Ihr Projekt vollständig mit Gradle synchronisieren. Klicken Sie dazu in der Symbolleiste auf Projekt synchronisieren . Sie können Tests mit unterschiedlichem Detaillierungsgrad ausführen:

  • Wenn Sie alle Tests in einem Verzeichnis oder einer Datei ausführen möchten, öffnen Sie das Projektfenster und führen Sie einen der folgenden Schritte aus:

    • Klicken Sie mit der rechten Maustaste auf ein Verzeichnis oder eine Datei und dann auf Ausführen .
    • Wählen Sie das Verzeichnis oder die Datei aus und verwenden Sie die Tastenkombination Strg + Umschalttaste + R.
  • Wenn Sie alle Tests in einer Klasse oder einer bestimmten Methode ausführen möchten, öffnen Sie die Testdatei im Code-Editor und führen Sie einen der folgenden Schritte aus:

    • Tippen Sie in der Leiste auf das Symbol Test ausführen .
    • Klicken Sie mit der rechten Maustaste auf die Testklasse oder -methode und klicken Sie auf Ausführen .
    • Wählen Sie die Testklasse oder -methode aus und verwenden Sie die Tastenkombination Strg + Umschalttaste + R.

Ihre instrumentierten Tests werden auf einem physischen Gerät oder Emulator ausgeführt. Weitere Informationen zum Einrichten physischer Geräte finden Sie unter Apps auf einem Hardwaregerät ausführen. Weitere Informationen zum Einrichten von Emulatoren finden Sie unter Apps im Android-Emulator ausführen.

Testlauf konfigurieren

Standardmäßig werden Ihre Tests mit der Standardausführungskonfiguration von Android Studio ausgeführt. Wenn Sie einige Ausführungseinstellungen wie den Instrumentierungs-Runner und die Bereitstellungsoptionen ändern müssen, können Sie die Ausführungskonfiguration im Dialogfeld Run/Debug Configurations bearbeiten. Klicken Sie dazu auf Run > Edit Configurations (Ausführen > Konfigurationen bearbeiten).

Unified Gradle-Test-Runner

Das Android-Gradle-Plug-in 7.1.0 sowie Android Studio Bumblebee und höher verwenden die Gradle-eigene Implementierung des instrumentierten Test-Runners von Android, um instrumentierte Tests auszuführen. Wenn Sie denselben Test-Runner verwenden, sind die Ergebnisse wahrscheinlich konsistent, unabhängig davon, ob Sie AGP über die Befehlszeile ausführen, z. B. auf einem Continuous-Integrationsserver, oder von Android Studio aus.

Abbildung 3: Der Unified Gradle-Test-Runner.

In früheren Versionen von Android Studio wird der instrumentierte Test-Runner von IntelliJ Android anstelle des instrumentierten Android-Test-Runners von Gradle verwendet. Wenn Sie also nicht die neueste Version von Android Studio verwenden und Ihre Tests in Android Studio oder mit dem Gradle-Plug-in über die Befehlszeile ausführen, werden möglicherweise unterschiedliche Testergebnisse angezeigt, z. B. wenn Tests mit einem Runner bestanden und bei einem anderen fehlgeschlagen werden.

Abbildung 4: Diskrete Test-Runner in älteren Versionen von Android Studio

Wenn Sie bereits instrumentierte Testkonfigurationen in Ihrem Projekt gespeichert haben, wird Gradle verwendet, um Tests auf Ihrem verbundenen Gerät auszuführen. Sie können eine neue instrumentierte Testkonfiguration erstellen, indem Sie die Gutter-Aktion neben Ihrer Testklasse oder -methode verwenden, wie unten gezeigt.

Abbildung 5: Tests für Gutter-Action ausführen.

Wenn Sie Ihre instrumentierten Tests ausführen, können Sie prüfen, ob Android Studio den Gradle-Test-Runner verwendet. Sehen Sie sich dazu die Testausgabe in der Testmatrix für die Gradle-Aufgabenausgabe an.

Parallel auf mehreren Geräten ausführen

Instrumentierte Tests werden standardmäßig auf einem physischen Gerät oder Emulator ausgeführt. Wenn Sie sehen möchten, wie sich Ihre Tests auf einer größeren Gruppe von Geräten verhalten, können Sie mehr Geräte auswählen. Gehen Sie dazu so vor:

  1. Öffnen Sie vor dem Ausführen der Tests das Drop-down-Menü „Zielgerät“ und wählen Sie Mehrere Geräte auswählen... aus.

    Abbildung 6: Wählen Sie im Dropdown-Menü Mehrere Geräte aus.

  2. Wählen Sie die gewünschten Geräte aus und klicken Sie auf OK.

  3. Ändern Sie den Text im Drop-down-Menü des Ziels in Mehrere Geräte und klicken Sie auf Ausführen .

  4. Im Fenster „Test Matrix“ (Testmatrix) werden die Testergebnisse für jede ausgewählte Gerätekonfiguration angezeigt.

    Abbildung 7: Testergebnisse im Fenster „Test Matrix“.

  5. Sie können auf einen bestimmten Test klicken, um das Ergebnis im Ausgabefenster zu überprüfen. Sie können die Tests auch sortieren, indem Sie auf die verschiedenen Spalten klicken.

Mit Firebase Test Lab ausführen

Mit Firebase Test Lab können Sie Ihre App gleichzeitig auf vielen beliebten Android-Geräten und Gerätekonfigurationen testen (verschiedene Kombinationen von Sprache, Ausrichtung, Bildschirmgröße und Plattformversion). Diese Tests werden auf physischen und virtuellen Geräten in Remote-Rechenzentren von Google ausgeführt. Die Testergebnisse enthalten Testprotokolle und enthalten die Details zu Anwendungsfehlern.

Um Firebase Test Lab zu verwenden, müssen Sie Folgendes tun:

  1. Erstellen Sie ein Google-Konto, falls Sie noch keines haben.
  2. Klicken Sie in der Firebase Console auf Neues Projekt erstellen.

Android Studio bietet integrierte Tools, mit denen Sie konfigurieren können, wie Sie Ihre Tests in Firebase Test Lab bereitstellen möchten. Nachdem Sie ein Firebase-Projekt erstellt haben, können Sie eine Testkonfiguration erstellen und Ihre Tests ausführen:

  1. Klicken Sie im Hauptmenü auf Run > Edit Configurations (Ausführen > Konfigurationen bearbeiten).
  2. Klicken Sie auf Neue Konfiguration hinzufügen und wählen Sie Instrumentierte Android-Tests aus.
  3. Geben Sie die Details Ihres Tests ein oder wählen Sie sie aus, z. B. Testname, Modultyp, Testtyp und Testklasse.
  4. Wählen Sie im Drop-down-Menü Ziel unter Optionen für das Deployment-Ziel die Option Firebase Test Lab-Gerätematrix aus.
  5. Wenn du nicht angemeldet bist, klicke auf Über Google anmelden und gewähre Android Studio Zugriff auf dein Konto.
  6. Wählen Sie neben Cloud-Projekt Ihr Firebase-Projekt aus der Liste aus.
  7. Wählen Sie neben Matrixkonfiguration eine der Standardkonfigurationen aus dem Drop-down-Menü aus oder erstellen Sie Ihre eigene, indem Sie auf Dialogfeld öffnen klicken. Sie können ein oder mehrere Geräte, Android-Versionen, Sprachen und Bildschirmausrichtungen auswählen, mit denen Sie Ihre App testen möchten. Beim Generieren von Testergebnissen testet Firebase Test Lab Ihre App anhand jeder Kombination Ihrer Auswahl.
  8. Klicken Sie zum Beenden im Dialogfeld Run/Debug Configurations auf OK.
  9. Klicken Sie auf Ausführen , um die Tests auszuführen.

Abbildung 8: Testkonfiguration für Firebase Test Lab wird erstellt.

Testergebnisse analysieren

Wenn Firebase Test Lab die Tests ausgeführt hat, wird das Fenster Ausführen geöffnet und die Ergebnisse werden angezeigt (siehe Abbildung 9). Unter Umständen müssen Sie auf Bestanden anzeigen klicken, um alle ausgeführten Tests zu sehen.

Abbildung 9: Die Ergebnisse von instrumentierten Tests mit Firebase Test Lab.

Sie können Ihre Tests auch im Web analysieren, indem Sie dem Link zu Beginn des Testausführungslogs im Fenster Ausführen folgen.

Testabdeckung ansehen

Das Testabdeckungstool ist für lokale Einheitentests verfügbar, um den Prozentsatz und die Bereiche Ihres App-Codes zu erfassen, die Ihre Einheitentests abgedeckt haben. Mit dem Testabdeckungstool können Sie feststellen, ob Sie die Elemente, Klassen, Methoden und Codezeilen Ihrer App angemessen getestet haben.

Wenn Sie Tests mit Abdeckung ausführen möchten, führen Sie dieselben Schritte wie unter Tests ausführen aus. Klicken Sie aber nicht auf Ausführen , sondern auf Testname mit Abdeckung ausführen . Im Fenster Projekt ist diese Option möglicherweise hinter Weitere Ausführung/Fehlerbehebung verborgen. Sie können die Abdeckungseinstellungen auch im Dialogfeld Ausführungs-/Fehlerbehebungskonfigurationen auf dem Tab Codeabdeckung konfigurieren.

Abbildung 10: Prozentsätze für die Codeabdeckung einer Anwendung

Testergebnisse abrufen

Wenn Sie einen oder mehrere Tests in Android Studio ausführen, werden die Ergebnisse im Fenster Ausführen angezeigt. Abbildung 11 zeigt einen erfolgreichen Testlauf.

Abbildung 11: Die Testergebnisse werden im Fenster „Ausführen“ angezeigt.

Im Fenster Ausführen werden die Tests in einer Strukturansicht auf der linken Seite angezeigt. Die Ergebnisse und Meldungen für die aktuelle Testsuite werden im Ausgabebereich rechts angezeigt. Mit den Symbolleisten, Kontextmenüs und Statussymbolen kannst du die Testergebnisse verwalten:

  1. Verwenden Sie die Symbolleiste „Ausführen“, um den aktuellen Test noch einmal auszuführen, den aktuellen Test zu stoppen, fehlgeschlagene Tests noch einmal auszuführen (nicht angezeigt, weil sie nur für Einheitentests verfügbar ist), die Ausgabe anzuhalten und die Threads zu sichern.
  2. Mit der Symbolleiste für Tests können Sie die Testergebnisse filtern und sortieren. Sie können auch Knoten maximieren oder minimieren, die Testabdeckung anzeigen und Testergebnisse importieren oder exportieren.
  3. Klicken Sie auf das Kontextmenü, um den laufenden Test zu verfolgen, Inline-Statistiken anzuzeigen, zum Stacktrace zu scrollen, den Quellcode bei einer Ausnahme zu öffnen, automatisch zur Quelle zu scrollen und nach Abschluss des Testlaufs den ersten fehlgeschlagenen Test auszuwählen.
  4. Teststatussymbole geben an, ob ein Test einen Fehler aufweist, ignoriert wurde, fehlgeschlagen ist, gerade läuft, bestanden wurde, pausiert ist, beendet oder nicht ausgeführt wurde.
  5. Klicken Sie mit der rechten Maustaste auf eine Zeile in der Baumansicht, um ein Kontextmenü aufzurufen, über das Sie die Tests im Debug-Modus ausführen, die Testquellcodedatei öffnen oder zu der Zeile im zu testenden Quellcode springen können.

Testfehler analysieren

Wenn einer oder mehrere Ihrer Tests fehlschlagen, werden im Ergebnisfenster ein Warnzeichen und die Anzahl der Fehler angezeigt (z. B. „Tests fehlgeschlagen: 1“):

Abbildung 12: Fehlgeschlagene Testdetails im Ausgabebereich.

Wenn Sie in der Baumansicht links auf den fehlgeschlagenen Test klicken, werden im Ausgabebereich auf der rechten Seite die Details dieses Tests angezeigt. Der erwartete Wert wird neben dem tatsächlichen Wert angezeigt, sodass Sie ihn vergleichen können. Der Link Klicken, um Unterschied zu sehen öffnet einen Unterschieds-Viewer, in dem Sie die Ergebnisse nebeneinander sehen können.

Weitere Informationen

Auf dieser Seite werden die grundlegenden Schritte beschrieben, die Sie beim Erstellen und Ausführen Ihres ersten Tests mit Android Studio ausführen müssen. Sie können auch Tests über die Befehlszeile ausführen. Sie können sich auch die IntelliJ-Dokumentation zu Tests ansehen. Weitere Informationen zum Konfigurieren der Tests beim Erstellen einer größeren Testsuite findest du unter Erweiterte Testeinrichtung.