UI-Tests mit Espresso Test Recorder erstellen

Mit dem Tool „Espresso Test Recorder“ 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, mit dem Sie Ihre App testen können.

Espresso Test Recorder schreibt Tests auf Grundlage des Espresso-Test-Frameworks, 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. Indem Erwartungen, Interaktionen und Zusicherungen angegeben werden, ohne direkt auf die zugrunde liegenden Aktivitäten und Ansichten der App zuzugreifen, wird die Instabilität von Tests verhindert und die Testgeschwindigkeit optimiert.

Animationen auf dem Testgerät deaktivieren

Bevor Sie Espresso Test Recorder verwenden, müssen Sie die Animationen auf Ihrem Testgerät deaktivieren, um unerwartete Ergebnisse zu vermeiden. Folgen Sie der Espresso-Einrichtungsanleitung. Sie müssen jedoch keine Abhängigkeitsreferenz manuell auf die Espresso-Bibliothek festlegen, da Test Recorder dies automatisch tut, wenn Sie eine Aufzeichnung 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 Ansichtselemente. UI-Interaktionen umfassen Tipp- und Eingabeaktionen, die eine Person verwenden kann, um mit Ihrer App zu interagieren. Mit Zusicherungen wird das Vorhandensein oder der Inhalt visueller Elemente auf dem Bildschirm überprüft. Ein Espresso-Test für die Notes-Test App kann beispielsweise UI-Interaktionen für das Klicken auf eine Schaltfläche und das Schreiben einer neuen Notiz umfassen, 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 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:

  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. Erstellen Sie bei Bedarf 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 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 Tipp- und Eingabeaktionen 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 „Waiting for Debugger“ (Warten auf Debugger) oder „Attaching Debugger“ (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 Force Close (Erzwungenes Schließen).

Aufgezeichnete Interaktionen werden im Hauptbereich des Fensters Test aufzeichnen angezeigt, wie in Abbildung 1 unten dargestellt. Wenn Sie den Test ausführen, versucht der Espresso-Test, diese Aktionen in derselben Reihenfolge auszuführen.

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

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

Mit Zusicherungen wird das Vorhandensein oder der Inhalt eines Ansichtselements anhand von drei Haupttypen überprüft:

  • text is (Text ist): Überprüft den Textinhalt des ausgewählten Ansichtselements.
  • exists (Vorhanden): Überprüft, ob das Ansichtselement in der aktuellen Ansicht hierarchie auf dem Bildschirm vorhanden ist.
  • does not exist (Nicht vorhanden): Überprüft, ob das Ansichtselement in der aktuellen Ansichtshierarchie nicht vorhanden ist.

So fügen Sie Ihrem Test eine Zusicherung hinzu:

  1. Klicken Sie auf Zusicherung hinzufügen. Ein Dialogfeld Bildschirmaufnahme 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.
  2. Ein Layout des aktuellen Bildschirms wird in einem Bereich rechts im Fenster Test aufzeichnen angezeigt. Wenn Sie ein Ansicht element auswählen möchten, für das eine Zusicherung erstellt werden soll, klicken Sie im Screenshot auf das Element oder verwenden Sie das erste Drop-down-Menü im Feld Zusicherung bearbeiten unten im Fenster. Das ausgewählte Ansichtsobjekt wird in einem roten Feld hervorgehoben.
  3. Wählen Sie die gewünschte Zusicherung aus dem zweiten Drop-down-Menü im Feld Zusicherung bearbeiten aus. Espresso füllt das Menü mit gültigen Zusicherungen für das ausgewählte Ansichtselement.
    • Wenn Sie die Zusicherung „text is“ (Text ist) auswählen, fügt Espresso automatisch den Text ein, der sich derzeit im ausgewählten Ansichtselement befindet. Sie können den Text im Textfeld im Feld Zusicherung bearbeiten bearbeiten, um ihn an die gewünschte Zusicherung anzupassen.
  4. Klicken Sie auf Speichern und weitere hinzufügen , um eine weitere Zusicherung zu erstellen, oder klicken Sie auf Zusicherung speichern , um die Zusicherungsbereiche zu schließen.

Der Screenshot in Abbildung 2 zeigt, wie eine Zusicherung vom Typ „text is“ (Text ist) erstellt wird, um zu überprüfen, ob der Titel der Notiz „Happy Testing!“ lautet.

Abbildung 2 : Das Feld Zusicherung bearbeiten , nachdem ein Ansichtselement ausgewählt wurde (rot).

Während Sie eine Zusicherung erstellen, können Sie weiterhin mit Ihrer App interagieren, auch wenn die Zusicherungsbereiche im Fenster Test aufzeichnen noch geöffnet sind. Espresso Test Recorder protokolliert Ihre Aktionen weiterhin. Die Zusicherung, die Sie bearbeiten, wird jedoch nach dem Speichern vor diesen Interaktionen angezeigt. Das Layout des Screenshots für die Zusicherung entspricht auch dem Layout, das das Gerät oder der Emulator hatte, als Sie auf die Schaltfläche Zusicherung hinzufügen geklickt haben.

Aufzeichnung speichern

Wenn Sie die Interaktion mit Ihrer App und das Hinzufügen von Zusicherungen abgeschlossen 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. 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 Testklassen name , 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 Fehlende Espresso-Abhängigkeiten angezeigt. Klicken Sie auf Ja , um die Abhängigkeiten automatisch zu Ihrer build.gradle Datei hinzuzufügen.
  3. Die Datei wird automatisch geöffnet, nachdem sie von Espresso Test Recorder generiert wurde, und In Android Studio wird die Testklasse im Fenster Projekt der IDE als ausgewählt angezeigt.
    • Wo der Test gespeichert wird, hängt vom Speicherort des Stammverzeichnisses des Instrumentierungs tests 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, auf dem Sie den Test aufgezeichnet haben.

Espresso-Test lokal ausführen

Um einen Espresso-Test auszuführen, verwenden Sie das Projekt Fenster auf der linken Seite von der Android Studio IDE:

  1. Öffnen Sie den gewünschten Ordner des App-Moduls und rufen Sie den Test auf, den Sie ausführen möchten. Der Speicherort des Tests hängt vom Speicherort des Instrumentierungs tests Stammverzeichnisses und vom Paketnamen der gestarteten Aktivität ab. Die folgenden Beispiele zeigen, wo ein Test für die Notes-Test-App gespeichert würde:
    • Wenn Sie im Fenster die Android Ansicht verwenden, rufen Sie java > com.example.username.appname (androidTest) auf.
    • Wenn Sie im Fenster die Ansicht Projekt verwenden, rufen Sie im Ordner des Moduls src > androidTest > java > com.example.username.appname auf.
  2. 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 finden Sie auf der Seite Test Your App.
  3. Wählen Sie im Fenster Bereitstellungsziel auswählen das Gerät aus, auf dem Sie den Test ausführen möchten. Erstellen Sie bei Bedarf ein neues virtuelles Android-Gerät. Klicken Sie auf OK.

Sie können den Fortschritt des Tests im Fenster Ausführen unten in der IDE verfolgen. Android Studio führt einen vollständigen Build Ihres Projekts aus und öffnet im Fenster Ausführen einen Tab mit dem Namen des Tests, wie in Abbildung 3 dargestellt. Auf diesem Tab können Sie prüfen, ob der Test bestanden oder fehlgeschlagen ist und wie lange die Ausführung gedauert hat. Wenn der Test abgeschlossen ist, wird auf dem Tab „Tests ran to completion“ (Tests wurden abgeschlossen) protokolliert.

Abbildung 3 : Beispielausgabe im Fenster Ausführen nach der lokalen Ausführung eines Espresso-Tests.

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

Espresso-Test mit Firebase Test Lab für 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. Die Nutzung von Test Lab ist im Rahmen des kostenlosen Tageskontingents des Spark-Tarifskostenlos. 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 unter Tests mit Firebase Test Lab ausführen aus Android Studio.

Abbildung 4 : Beispielausgabe im Fenster Ausführen nach der Ausführung eines Tests mit Firebase Test Lab auf mehreren Geräten.