Mit dem Espresso Test Recorder-Tool können Sie UI-Tests für Ihre App erstellen, ohne Testcode schreiben zu müssen. Wenn Sie ein Testszenario aufzeichnen, können Sie Ihre Interaktionen mit einem Gerät aufzeichnen und Zusicherungen hinzufügen, um UI-Elemente in bestimmten Snapshots Ihrer App zu überprüfen. Espresso Test Recorder verwendet 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 basierend auf dem Espresso-Testframework, einer API in AndroidX Test. Die Espresso API unterstützt Sie dabei, prägnante und zuverlässige UI-Tests auf Grundlage von Nutzeraktionen zu erstellen. Durch die Angabe von Erwartungen, Interaktionen und Zusicherungen, ohne direkt auf die Aktivitäten und Ansichten der zugrunde liegenden App zuzugreifen, wird die Testinstabilität verhindert und die Testlaufgeschwindigkeit optimiert.
Animationen auf dem Testgerät deaktivieren
Bevor Sie Espresso Test Recorder verwenden, müssen Sie Animationen auf Ihrem Testgerät deaktivieren, um unerwartete Ergebnisse zu vermeiden. Folgen Sie der Espresso-Einrichtungsanleitung. Sie müssen jedoch keinen Abhängigkeitsverweis auf die Espresso-Bibliothek manuell festlegen, da Test Recorder dies automatisch erledigt, wenn Sie eine Aufnahme speichern. Diese Schritte müssen nur einmal für ein bestimmtes Projekt ausgeführt werden.
Espresso-Test aufzeichnen
Espresso-Tests bestehen aus zwei Hauptkomponenten: UI-Interaktionen und Zusicherungen für View-Elemente. UI-Interaktionen umfassen Tipp- und Eingabeaktionen, die ein Nutzer zur Interaktion mit Ihrer App verwenden kann. Mit Assertions wird das Vorhandensein oder der Inhalt visueller Elemente auf dem Bildschirm überprüft. Ein Espresso-Test für die Notes testing app (App zum Testen von Notizen) könnte beispielsweise UI-Interaktionen zum Klicken auf eine Schaltfläche und zum Schreiben einer neuen Notiz enthalten, würde aber Zusicherungen verwenden, um das Vorhandensein der Schaltfläche und den Inhalt der Notiz zu überprüfen.
In diesem Abschnitt erfahren Sie, wie Sie beide Testkomponenten mit dem Espresso Test Recorder erstellen und wie Sie die fertige Aufzeichnung speichern, um den Test zu generieren.
UI-Interaktionen aufzeichnen
So starten Sie die Aufzeichnung eines Tests mit Espresso Test Recorder:
- Klicken Sie auf Run > Record Espresso Test (Ausführen > Espresso-Test aufzeichnen).
- Wählen Sie im Fenster Select Deployment Target (Bereitstellungsziel auswählen) das Gerät aus, auf dem Sie den Test aufzeichnen möchten. Erstellen Sie bei Bedarf ein neues Android-Virtual-Device. Klicken Sie auf OK.
- Espresso Test Recorder löst einen Build Ihres Projekts aus. Die App muss installiert und gestartet werden, bevor Sie mit Espresso Test Recorder mit ihr interagieren können. Das Fenster Test aufzeichnen wird nach dem Starten der App angezeigt. Da Sie noch nicht mit dem Gerät interagiert haben, wird im Hauptbereich „No events recorded yet“ (Noch keine Ereignisse aufgezeichnet) angezeigt. Interagieren Sie mit Ihrem Gerät, um Ereignisse wie Tippen und Eingeben zu protokollieren.
Hinweis: Bevor Sie mit der Protokollierung von Interaktionen beginnen können, wird auf Ihrem Gerät möglicherweise ein Dialogfeld mit der Meldung „Warten auf Debugger“ 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 Hauptbereich des Fensters Test aufzeichnen angezeigt, wie in Abbildung 1 unten dargestellt. Wenn Sie den Test ausführen, werden die Aktionen im Espresso-Test in derselben Reihenfolge ausgeführt.
Abbildung 1: Das Fenster Test aufzeichnen mit protokollierten UI-Interaktionen.
Assertions zum Überprüfen von UI-Elementen hinzufügen
Mit Assertions wird die Existenz oder der Inhalt eines View-Elements anhand von drei Haupttypen überprüft:
- text is: Prüft den Textinhalt des ausgewählten Ansichtselements.
- exists: Prüft, ob das View-Element in der aktuellen View-Hierarchie vorhanden ist, die auf dem Bildschirm sichtbar ist.
- does not exist: Prüft, ob das View-Element in der aktuellen View-Hierarchie nicht vorhanden ist.
So fügen Sie Ihrem Test eine Assertion hinzu:
- Klicken Sie auf Assertion hinzufügen. Das Dialogfeld Screenshot wird angezeigt, während Espresso die UI-Hierarchie und andere Informationen zum aktuellen App-Status abruft. Das Dialogfeld wird automatisch geschlossen, sobald Espresso den Screenshot aufgenommen hat.
- Rechts im Fenster Test aufzeichnen wird ein Layout des aktuellen Bildschirms angezeigt. Wenn Sie ein Ansichtselement auswählen möchten, für das eine Assertion erstellt werden soll, klicken Sie im Screenshot auf das Element oder verwenden Sie das erste Drop-down-Menü im Feld Assertion bearbeiten unten im Fenster. Das ausgewählte Ansichtsobjekt ist rot umrandet.
- Wählen Sie im Feld Assertion bearbeiten im zweiten Drop-down-Menü die gewünschte Assertion aus. Espresso füllt das Menü mit gültigen Assertions für das ausgewählte View-Element.
- Wenn Sie die Assertion „text is“ auswählen, fügt Espresso automatisch den Text ein, der sich derzeit im ausgewählten View-Element befindet. Sie können den Text über das Textfeld im Feld Assertion bearbeiten an Ihre gewünschte Behauptung anpassen.
- Klicken Sie auf Speichern und weitere hinzufügen, um eine weitere Behauptung zu erstellen, oder auf Behauptung speichern, um die Behauptungsbereiche zu schließen.
Der Screenshot in Abbildung 2 zeigt, wie eine „text is“-Assertion erstellt wird, um zu prüfen, ob der Titel der Notiz „Happy Testing!“ lautet:
Abbildung 2: Das Kästchen Assertion bearbeiten, nachdem ein Ansichtselement ausgewählt wurde (rot).
Während Sie eine Assertion erstellen, können Sie weiterhin mit Ihrer App interagieren, auch wenn die Assertion-Felder im Fenster Test aufzeichnen noch geöffnet sind. Der Espresso Test Recorder protokolliert Ihre Aktionen weiterhin, aber die Assertion, die Sie bearbeiten, wird nach dem Speichern vor diesen Interaktionen angezeigt. Der Screenshot für die Assertion behält auch das Layout bei, das das Gerät oder der Emulator zu dem Zeitpunkt hatte, als Sie auf die Schaltfläche Assertion hinzufügen geklickt haben.
Aufnahme speichern
Wenn Sie die Interaktion mit Ihrer App und das Hinzufügen von Zusicherungen abgeschlossen haben, gehen Sie so vor, um die Aufzeichnung zu speichern und den Espresso-Test zu generieren:
- Klicken Sie auf Aufnahme abschließen. Das Fenster Pick a test class name for your test (Wählen Sie einen Namen für die Testklasse für Ihren Test aus) wird angezeigt.
- Espresso Test Recorder gibt Ihrem Test einen eindeutigen Namen innerhalb des zugehörigen Pakets, 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 App hinzugefügt haben, wird beim Speichern des Tests das Dialogfeld Missing Espresso dependencies (Espresso-Abhängigkeiten fehlen) angezeigt. Klicken Sie auf Ja, um die Abhängigkeiten automatisch in Ihre
build.gradle-Datei einzufügen.
- Wenn Sie die Espresso-Abhängigkeiten nicht zu Ihrer App hinzugefügt haben, wird beim Speichern des Tests das Dialogfeld Missing Espresso dependencies (Espresso-Abhängigkeiten fehlen) angezeigt. Klicken Sie auf Ja, um die Abhängigkeiten automatisch in Ihre
- Die Datei wird automatisch geöffnet, nachdem sie von Espresso Test Recorder generiert wurde. In Android Studio wird die Testklasse im IDE-Fenster Project (Projekt) als ausgewählt angezeigt.
- Wo der Test gespeichert wird, hängt vom Speicherort des Stammverzeichnisses Ihres Instrumentierungstests sowie vom Paketnamen der gestarteten Aktivität ab. Tests für die Notizen-Test-App werden beispielsweise im Ordner src> androidTest > java > com.example.username.appname des App-Moduls gespeichert, für das Sie den Test aufgezeichnet haben.
Espresso-Test lokal ausführen
Um einen Espresso-Test auszuführen, verwenden Sie das Fenster Project
auf der linken Seite der Android Studio IDE:
- Ö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 Instrumentierungstests und vom Paketnamen der gestarteten Aktivität ab. Die folgenden Beispiele zeigen, wo ein Test in der Notes-Test-App gespeichert wird:
- Wenn Sie die Android-Ansicht im Fenster verwenden, gehen Sie zu java > com.example.username.appname (androidTest).
- Wenn Sie die Ansicht Project im Fenster verwenden, rufen Sie im Modulordner src> androidTest > java > com.example.username.appname auf.
- Klicken Sie mit der rechten Maustaste auf den Test und dann auf „testName“ ausführen.
- 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 auf der Seite „App testen“
- Wählen Sie im Fenster Select Deployment Target (Bereitstellungsziel auswählen) das Gerät aus, auf dem Sie den Test ausführen möchten. Erstellen Sie bei Bedarf ein neues Android-Virtual-Device. Klicken Sie auf OK.
Überwachen Sie den Fortschritt des Tests im Fenster Run (Ausführen) unten in der IDE. Android Studio führt einen vollständigen Build Ihres Projekts aus und öffnet im Fenster Run (Ausführen) einen Tab mit dem Namen Ihres Tests, wie in Abbildung 3 dargestellt. Auf diesem Tab können Sie sehen, ob Ihr Test bestanden oder fehlgeschlagen ist und wie lange die Ausführung des Tests gedauert hat. Wenn der Test abgeschlossen ist, wird auf dem Tab „Tests ran to completion“ (Tests wurden vollständig ausgeführt) protokolliert.
Abbildung 3. Beispielausgabe im Fenster Run (Ausführen) nach dem lokalen Ausführen eines Espresso-Tests.
Weitere Informationen zum Schreiben von Testlaufkonfigurationen finden Sie im Abschnitt „Defining a test configuration for a class or method“ (Testkonfiguration für eine Klasse oder Methode definieren) unter Create and Edit Run/Debug Configurations (Lauf-/Debug-Konfigurationen erstellen und bearbeiten).
Espresso-Test mit Firebase Test Lab for Android ausführen
Sie können mit Espresso Test Recorder generierte Tests mit Firebase Test Lab verwenden, um Ihre App in der Cloud auf Hunderten von Gerätekonfigurationen zu testen. Das Testen Ihrer App mit Test Lab ist im Rahmen des kostenlosen täglichen Kontingents im Spark-Abo kostenlos. 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 in Android Studio.
Abbildung 4. Beispielausgabe im Fenster Run (Ausführen) nach dem Ausführen eines Tests mit Firebase Test Lab auf mehreren Geräten.