UI-Tests mit Espresso Test Recorder erstellen

Mit dem Espresso Test Recorder-Tool können Sie UI-Tests für Ihre App erstellen, ohne Testcode schreiben zu müssen. Durch das Aufzeichnen eines Testszenarios können Sie Ihre Interaktionen mit einem Gerät aufzeichnen und Assertions hinzufügen, um UI-Elemente in bestimmten Snapshots Ihrer App zu überprüfen. Der Espresso Test Recorder erstellt dann die gespeicherte Aufzeichnung und generiert automatisch einen entsprechenden UI-Test, den Sie zum Testen Ihrer App ausführen können.

Espresso Test Recorder schreibt Tests auf Grundlage des Espresso Testing-Frameworks, einer API in AndroidX Test. Die Espresso API empfiehlt Ihnen, prägnante und zuverlässige UI-Tests basierend auf Nutzeraktionen zu erstellen. Durch die Formulierung von Erwartungen, Interaktionen und Assertions ohne direkten Zugriff auf die Aktivitäten und Ansichten der zugrunde liegenden App verhindert diese Struktur unzuverlässige Tests und optimiert die Geschwindigkeit des Testlaufs.

Animationen auf dem Testgerät deaktivieren

Bevor Sie den Espresso Test Recorder verwenden, müssen Sie die Animationen auf Ihrem Testgerät deaktivieren, um unerwartete Ergebnisse zu vermeiden. Folgen Sie der Anleitung zur Einrichtung von Espresso. Sie müssen jedoch nicht manuell einen Abhängigkeitsverweis auf die Espresso-Bibliothek festlegen, da dies automatisch beim Speichern einer Aufnahme von Test Recorder erfolgt. Diese Schritte müssen pro Projekt nur einmal ausgeführt werden.

Espresso-Test aufzeichnen

Espresso-Tests bestehen aus zwei Hauptkomponenten: UI-Interaktionen und Assertions zu View-Elementen. Interaktionen mit der Benutzeroberfläche umfassen Tipp- und Typaktionen, mit denen Nutzer mit Ihrer App interagieren können. Mit Assertions wird geprüft, ob visuelle Elemente auf dem Bildschirm vorhanden sind oder Inhalte darin enthalten sind. Ein Espresso-Test für die Notes-Test-App kann beispielsweise UI-Interaktionen zum Klicken auf eine Schaltfläche und zum Schreiben einer neuen Notiz enthalten. Assertions werden jedoch verwendet, um die Existenz der Schaltfläche und des Inhalts des Hinweises zu überprüfen.

In diesem Abschnitt wird erläutert, wie du diese beiden Testkomponenten mit dem Espresso-Test-Rekorder erstellst und wie du deine fertige Aufzeichnung speicherst, um den Test zu generieren.

UI-Interaktionen aufzeichnen

Um eine Prüfung mit dem Espresso Test Recorder aufzuzeichnen, gehen Sie wie folgt vor:

  1. Klicken Sie auf Ausführen> Espresso-Test aufzeichnen.
  2. Wählen Sie im Fenster Bereitstellungsziel auswählen das Gerät aus, auf dem Sie den Test aufzeichnen möchten. Erstelle gegebenenfalls ein neues virtuelles Android-Gerät. Klicken Sie auf OK.
  3. Espresso Test Recorder löst einen Build Ihres Projekts aus. Die App muss installiert und gestartet werden, bevor Sie mit Espresso Test Recorder interagieren können. Das Fenster Test aufzeichnen wird nach dem Start der App angezeigt. Da Sie noch nicht mit dem Gerät interagiert haben, wird im Hauptbereich „Noch keine Ereignisse aufgezeichnet“ angezeigt. Interagiere mit deinem Gerät, um Ereignisse wie „Tippen“ und „Eingeben“ zu protokollieren.

Hinweis: Bevor Sie mit dem Protokollieren von Interaktionen beginnen können, wird möglicherweise das Dialogfeld „Auf Debugger wird gewartet“ oder „Debugger wird angehängt“ angezeigt. Espresso Test Recorder verwendet den Debugger, um UI-Ereignisse zu protokollieren. Wenn der Debugger angehängt wird, wird das Dialogfeld automatisch geschlossen. Klicken Sie nicht auf Schließen erzwingen.

Aufgezeichnete Interaktionen werden im Hauptsteuerfeld im Fenster Record Your Test (Test aufzeichnen) angezeigt, wie in Abbildung 1 unten dargestellt. Wenn du den Test durchführst, versucht der Espresso-Test, diese Aktionen in der gleichen Reihenfolge auszuführen.

Abbildung 1: Das Fenster Test Your Test (Test aufzeichnen) mit protokollierten UI-Interaktionen.

Assertions hinzufügen, um UI-Elemente zu überprüfen

Assertions prüfen die Existenz oder den Inhalt eines View-Elements anhand von drei Haupttypen:

  • text is: Prüft den Textinhalt des ausgewählten View-Elements.
  • exists auf dem Bildschirm: Überprüft, ob das View-Element in der aktuellen View-Hierarchie vorhanden ist, die auf dem Bildschirm sichtbar ist
  • does not exist: Überprüft, ob das View-Element in der aktuellen View-Hierarchie nicht vorhanden ist.

So fügen Sie Ihrem Test eine Assertion hinzu:

  1. Klicken Sie auf Assertion hinzufügen. Das Dialogfeld Bildschirmaufnahme wird angezeigt, während Espresso die UI-Hierarchie und andere Informationen zum aktuellen Anwendungsstatus abruft. Das Dialogfeld wird automatisch geschlossen, sobald Espresso den Screenshot aufgenommen hat.
  2. Ein Layout des aktuellen Bildschirms wird in einem Bereich auf der rechten Seite des Fensters Test aufzeichnen angezeigt. Um ein Ansichtselement auszuwählen, für das eine Assertion erstellt werden soll, klicken Sie auf das Element im Screenshot oder verwenden Sie das erste Drop-down-Menü im Feld Assertion bearbeiten unten im Fenster. Das ausgewählte View-Objekt wird in einem roten Feld hervorgehoben.
  3. Wählen Sie im zweiten Drop-down-Menü im Feld Assertion bearbeiten die zu verwendende Assertion aus. Espresso füllt das Menü mit gültigen Assertions für das ausgewählte View-Element.
    • Wenn Sie die Assertion „text is“ (Text ist) auswählen, fügt Espresso automatisch den Text ein, der sich derzeit im ausgewählten View-Element befindet. Über das Textfeld im Feld Assertion bearbeiten können Sie den Text so bearbeiten, dass er der gewünschten Assertion entspricht.
  4. Klicken Sie auf Save and Add Another (Speichern und weitere hinzufügen), um eine weitere Assertion zu erstellen, oder klicken Sie auf Save Assertion (Assertion speichern), um die Assertion-Felder zu schließen.

Der Screenshot in Abbildung 2 zeigt, dass die Assertion „Text ist“ erstellt wird, um zu prüfen, ob der Titel der Notiz „Happy Testing!“ lautet:

Abbildung 2: Das Feld Assertion bearbeiten, nachdem ein Ansichtselement ausgewählt wurde (in Rot).

Während Sie eine Assertion erstellen, können Sie weiter mit Ihrer Anwendung interagieren, auch wenn die Assertion-Felder im Fenster Test aufzeichnen noch geöffnet sind. Espresso Test Recorder protokolliert Ihre Aktionen weiterhin, aber die von Ihnen bearbeitete Assertion wird vor diesen Interaktionen nach dem Speichern angezeigt. Im Screenshot für die Assertion wird auch das Layout beibehalten, das das Gerät oder der Emulator war, als Sie auf die Schaltfläche Assertion hinzufügen geklickt haben.

Aufzeichnung speichern

Nachdem Sie mit der Anwendung interagiert und Assertions hinzugefügt haben, führen Sie die folgenden Schritte aus, um die Aufzeichnung zu speichern und den Espresso-Test zu generieren:

  1. Klicken Sie auf Aufzeichnung abschließen. Das Fenster Testklassennamen für den Test auswählen wird angezeigt.
  2. Der Espresso Test Recorder gibt Ihrem Test innerhalb des Pakets einen eindeutigen Namen, der auf dem Namen der gestarteten Aktivität basiert. Verwenden Sie das Textfeld Name der Testklasse, wenn Sie den vorgeschlagenen Namen ändern möchten. Klicken Sie auf Speichern.
    • Wenn Sie die Espresso-Abhängigkeiten nicht zu Ihrer Anwendung hinzugefügt haben, wird beim Speichern des Tests das Dialogfeld Fehlende Espresso-Abhängigkeiten angezeigt. Klicken Sie auf Ja, um die Abhängigkeiten automatisch der Datei build.gradle hinzuzufügen.
  3. Die Datei wird automatisch geöffnet, nachdem der Espresso Test Recorder sie generiert hat und in Android Studio die Testklasse im Fenster Project der IDE ausgewählt wird.
    • Wo der Test gespeichert wird, hängt vom Speicherort des Stammverzeichnisses für Instrumentierungstests sowie vom Paketnamen der gestarteten Aktivität ab. Tests für die Notes-Test-App werden beispielsweise im Ordner src> androidTest > java > com.example.username.appname des App-Moduls gespeichert, in dem Sie den Test aufgezeichnet haben.

Espresso-Test lokal ausführen

Verwenden Sie zum Ausführen eines Espresso-Tests das Fenster Projekt auf der linken Seite der Android Studio-IDE:

  1. Öffnen Sie den gewünschten App-Modulordner und rufen Sie den Test auf, den Sie ausführen möchten. Der Speicherort des Tests hängt vom Speicherort des Stammverzeichnisses für Instrumentierungstests und vom Paketnamen der gestarteten Aktivität ab. Die folgenden Beispiele zeigen, wo ein Test für die Notes-Test-App gespeichert werden würde:
    • Wenn Sie die Android-Ansicht im Fenster verwenden, rufen Sie java > com.example.username.appname (androidTest) auf.
    • Wenn Sie die Projektansicht im Fenster verwenden, gehen Sie im Modulordner zu src> androidTest > java > com.example.username.appname.
  2. Klicken Sie mit der rechten Maustaste auf den Test und dann auf Run ‘testName’.
    • Alternativ können Sie die Testdatei öffnen und mit der rechten Maustaste auf die generierte Testklasse oder -methode klicken. Weitere Informationen zum Ausführen von Tests finden Sie auf der Seite App testen.
  3. Wählen Sie im Fenster Bereitstellungsziel auswählen das Gerät aus, auf dem Sie den Test ausführen möchten. Erstelle gegebenenfalls ein neues virtuelles Android-Gerät. Klicken Sie auf OK.

Überwachen Sie den Fortschritt des Tests unten in der IDE im Fenster Ausführen. Android Studio führt einen vollständigen Build Ihres Projekts aus und öffnet im Fenster Run (Ausführen) einen Tab mit dem Namen des Tests, wie in Abbildung 3 dargestellt. Auf diesem Tab können Sie prüfen, ob Ihr Test bestanden wurde oder fehlschlägt und wie lange er gedauert hat. Wenn der Test abgeschlossen ist, wird auf dem Tab „Tests bis zum Abschluss“ angezeigt.

Abbildung 3. Beispielausgabe im Fenster Ausführen, nachdem Sie einen Espresso-Test lokal ausgeführt haben.

Weitere Informationen zum Schreiben von Testlaufkonfigurationen finden Sie im Abschnitt „Testkonfiguration für eine Klasse oder Methode definieren“ unter Ausführungs-/Fehlerbehebungskonfigurationen erstellen und bearbeiten.

Espresso-Test mit Firebase Test Lab for Android

Sie können von Espresso Test Recorder generierte Tests mit Firebase Test Lab verwenden, um Ihre App in der Cloud auf Hunderten von Gerätekonfigurationen zu testen. Für das Testen Ihrer Anwendung mit Test Lab im Rahmen des kostenlosen Tageskontingents im Tarif „Spark“ fallen keine Kosten an. Wenn Sie Espresso-Tests mit Firebase Test Lab ausführen möchten, erstellen Sie ein Firebase-Projekt für Ihre App und folgen Sie dann der Anleitung zum Ausführen von Tests mit Firebase Test Lab über Android Studio.

Abbildung 4. Beispielausgabe im Fenster Ausführen, nachdem ein Test mit Firebase Test Lab auf mehreren Geräten ausgeführt wurde.