Tuesday 28 November 2017

Uiutomator Wartet Vor


Ich fange an, UIAutomator auf Android zu studieren. Ich habe ein einfaches poc-Projekt erstellt, darin gibt es sehr wenige Elemente. Eine Taste und eine editText. Das Verhalten ist ganz einfach: Wenn ich die Botton schlage, erscheint die in der editText geschriebene Nachricht in einer SnackBar. Jetzt möchte ich zwei einfache Tests machen: sehe, ob die Snackbar richtig erscheint, wenn die editTest-Nachricht korrekt in der Snackbar gemeldet wird. Für Punkt eins habe ich auf diese Weise getan: Das ist im beobachten die Snackbars Aktion zu überprüfen, ob die Snack-Bar ist Richtig geöffnet Gibt es die besseren Möglichkeiten, dies zu tun Auf diese Weise, wenn es mehr Elemente in der gleichen Weise der Snackbars Aktion benannt wird, werde ich ein Problem haben Für den zweiten Punkt finde ich keinen Weg, um es zu testen. Ich muss nur uiAutomator und nicht Espresso verwenden :) Vielen Dank an alle:) Testing Support Library In diesem Dokument Die Android Testing Support Library bietet ein umfangreiches Framework für das Testen von Android Apps. Diese Bibliothek bietet eine Reihe von APIs, mit denen Sie schnell Test-Code für Ihre Apps erstellen können, einschließlich JUnit 4 und funktionale Benutzeroberfläche (UI) Tests. Sie können Tests ausführen, die mit diesen APIs aus der Android Studio IDE oder aus der Befehlszeile erstellt wurden. Die Android Testing Support-Bibliothek ist über den Android SDK Manager verfügbar. Weitere Informationen finden Sie unter Testing Support Library Setup Diese Seite enthält Informationen darüber, welche Tools in der Android Testing Support Library bereitgestellt werden, wie Sie sie in Ihrer Testumgebung verwenden und Informationen über Bibliotheksversionen verwenden. Testing Support Library Features Die Android Testing Support Library enthält die folgenden Testautomatisierungstools: AndroidJUnitRunner. JUnit 4-kompatibler Testläufer für Android Espresso. UI-Test-Framework für funktionale UI-Tests innerhalb einer App UI Automator. UI-Test-Framework für Cross-App funktionale UI-Tests über System und installierte Apps AndroidJUnitRunner Die AndroidJUnitRunner-Klasse ist ein JUnit-Test-Läufer, mit dem Sie JUnit 3 oder JUnit 4-style Testklassen auf Android-Geräten, einschließlich der mit dem Espresso und UI Automator Prüfungsrahmen. Der Test-Läufer verarbeitet das Laden des Testpakets und die App, die auf einem Gerät getestet wird, führt Ihre Tests durch und berichtet Testergebnisse. Diese Klasse ersetzt die InstrumentationTestRunner-Klasse, die nur JUnit 3-Tests unterstützt. Die Hauptmerkmale dieses Testläufers sind: Benötigt Android 2.2 (API Level 8) oder höher. JUnit-Unterstützung Der Test-Läufer ist kompatibel mit Ihren JUnit 3 und JUnit 4 (bis zu JUnit 4.10) Tests. Allerdings sollten Sie vermeiden, JUnit 3 und JUnit 4 Testcode im selben Paket zu mischen, da dies zu unerwarteten Ergebnissen führen könnte. Wenn Sie eine instrumentierte JUnit 4-Testklasse erstellen, um auf einem Gerät oder Emulator laufen zu können, muss Ihre Testklasse mit der RunWith (AndroidJUnit4.class) Annotation vorangestellt werden. Das folgende Code-Snippet zeigt, wie Sie einen instrumentierten JUnit 4-Test schreiben können, um zu bestätigen, dass die Add-Operation in der CalculatorActivity-Klasse korrekt funktioniert. Zugriff auf Instrumentationsinformationen Sie können die InstrumentationRegistry-Klasse verwenden, um auf Informationen zu Ihrem Testlauf zuzugreifen. Diese Klasse enthält das Instrumentationsobjekt, das Ziel-App-Kontextobjekt, das Test-App-Kontextobjekt und die Befehlszeilenargumente, die in Ihren Test übergeben wurden. Diese Daten sind nützlich, wenn Sie Tests mit dem UI Automator-Framework schreiben oder wenn Sie Tests schreiben, die Abhängigkeiten von Instrumentations - oder Kontext-Objekten haben. Testfilterung In Ihren JUnit 4.x Tests können Sie Annotationen verwenden, um den Testlauf zu konfigurieren. Diese Funktion minimiert die Notwendigkeit, Kesselplatte und Bedingungscode in Ihren Tests hinzuzufügen. Zusätzlich zu den von JUnit 4 unterstützten Standard-Annotationen unterstützt der Test-Runner auch Android-spezifische Annotationen, darunter: RequiresDevice. Gibt an, dass der Test nur auf physischen Geräten ausgeführt werden soll, nicht auf Emulatoren. SdkSupress Unterdrückt den Test vom Ausführen auf einem niedrigeren Android-API-Level als der angegebene Level. Um beispielsweise Tests auf allen API-Stufen unter 18 zu unterdrücken, verwenden Sie die Annotation SDKSupress (minSdkVersion18). 64SmallTest 64MediumTest. Und 64LargeTest. Klassifizieren Sie, wie lange ein Test zum Laufen führen sollte, und folglich, wie häufig Sie den Test ausführen können. Test-Sharding Der Test-Runner unterstützt das Spalten einer einzelnen Test-Suite in mehrere Shards. So können Sie leicht laufen Tests, die zu dem gleichen Shard zusammen als eine Gruppe, unter der gleichen Instrumentation Instanz. Jeder Shard wird durch eine Indexnummer identifiziert. Wenn Sie Tests ausführen, verwenden Sie die Option - e numShards, um die Anzahl der zu erstellenden separaten Shards anzugeben und die Option - e shardIndex anzugeben, welcher Shard ausgeführt werden soll. Um zum Beispiel die Test-Suite in 10 Shards aufzuteilen und nur die im zweiten Shard gruppierten Tests auszuführen, verwenden Sie den folgenden Befehl: Weitere Informationen zur Verwendung dieses Test-Läufers finden Sie in der API-Referenz. Das Espresso-Test-Framework bietet eine Reihe von APIs zum Erstellen von UI-Tests, um Benutzerflüsse innerhalb einer App zu testen. Diese APIs lassen Sie schreiben automatisierte UI-Tests, die prägnant sind und die zuverlässig laufen. Espresso eignet sich gut für das Schreiben von weißen Box-Stil automatisierte Tests, wo der Testcode verwendet Implementierung Code Details aus der App im Test. Die wichtigsten Merkmale des Espresso-Test-Frameworks sind: Flexible APIs für View - und Adapter-Matching in Ziel-Apps. Weitere Informationen finden Sie unter View matching. Eine umfangreiche Reihe von Action-APIs zur Automatisierung von UI-Interaktionen. Weitere Informationen finden Sie unter Aktions-APIs. UI-Thread-Synchronisation zur Verbesserung der Testzuverlässigkeit. Weitere Informationen finden Sie unter UI-Thread-Synchronisation. Benötigt Android 2.2 (API Level 8) oder höher. View matching Die) Espresso. onView () - Methode ermöglicht den Zugriff auf eine UI-Komponente in der Ziel-App und interagiert damit. Die Methode akzeptiert ein Matcher-Argument und durchsucht die Ansichtshierarchie, um eine entsprechende View-Instanz zu finden, die bestimmte Kriterien erfüllt. Sie können die Suche nach folgenden Kriterien verfeinern: Der Klassenname der Ansicht Die Inhaltsbeschreibung der Ansicht Die R. id der Ansicht Text, der in der Ansicht angezeigt wird, z. B. auf eine Schaltfläche, die den ID-Wert von mybutton hat. Sie können einen Matcher wie folgt angeben: Wenn die Suche erfolgreich ist, gibt die) onView () - Methode eine Referenz zurück, mit der Sie Benutzeraktionen ausführen und Assertionen gegen die Zielansicht testen können. Adapter-Matching In einem AdapterView-Layout ist das Layout dynamisch mit Kinderansichten zur Laufzeit gefüllt. Wenn die Zielansicht innerhalb eines Layouts liegt, das von AdapterView (z. B. ListView oder GridView) untergeordnet ist, funktioniert die) onView () - Methode möglicherweise nicht, da nur eine Teilmenge der Layoutsansichten in die aktuelle Ansichtshierarchie geladen werden kann. Verwenden Sie stattdessen die) Espresso. onData () - Methode, um auf ein Zielansichtselement zuzugreifen. Die) Espresso. onData () - Methode gibt eine Referenz zurück, mit der Sie Benutzeraktionen ausführen und Assertionen gegen die Elemente in einem AdapterView testen können. Aktions-APIs In der Regel testen Sie eine App, indem Sie einige Benutzerinteraktionen gegen die Benutzeroberfläche der Apps ausführen. Sie können diese Aktionen in Ihrem Test einfach mithilfe der ViewActions API automatisieren. Sie können solche UI-Interaktionen ausführen wie: Klick-Klicks Swipes-Taste und Schaltflächen-Prints Typing-Text Link öffnen Zum Beispiel, um die Eingabe eines String-Wertes zu simulieren und eine Schaltfläche zu drücken, um den Wert zu übermitteln, können Sie ein automatisiertes Test-Skript wie dieses schreiben. Die Methoden ViewInteraction. perform () und DataInteraction. perform () nehmen ein oder mehrere ViewAction-Argumente und führen die Aktionen in der angegebenen Reihenfolge aus. UI-Thread-Synchronisation Tests auf Android-Geräten können zufällig aufgrund von Timing-Problemen fehlschlagen. Diese Testproblematik wird als Testflockigkeit bezeichnet. Vor dem Espresso war der Workaround, einen ausreichend langen Schlaf - oder Timeout-Zeitraum in einen Test einzufügen oder Code hinzuzufügen, um den fehlgeschlagenen Vorgang erneut zu wiederholen. Das Espresso-Test-Framework verarbeitet die Synchronisation zwischen der Instrumentation und dem UI-Thread, was die Notwendigkeit für die vorherigen Timing-Workarounds beseitigt und sicherstellt, dass Ihre Testaktionen und Assertionen zuverlässiger ausgeführt werden. UI Automator Das UI Automator Test Framework bietet eine Reihe von APIs zum Erstellen von UI-Tests, die Interaktionen auf Benutzer-Apps und System-Apps ausführen. Mit den UI Automator APIs können Sie Operationen wie das Öffnen des Einstellungsmenüs oder den App Launcher in einem Testgerät durchführen. Das UI Automator Test Framework eignet sich hervorragend für das Schreiben von Blackbox-Stil automatisierten Tests, bei denen der Testcode nicht auf interne Implementierungsdetails der Ziel-App angewiesen ist. Die wichtigsten Merkmale des UI Automator Test Frameworks sind: Ein Viewer, um Layout-Hierarchie zu überprüfen. Weitere Informationen finden Sie unter UI Automator Viewer. Eine API, um Statusinformationen abzurufen und Operationen auf dem Zielgerät auszuführen. Weitere Informationen finden Sie unter Zugriff auf Gerätezustand. APIs, die Cross-App-UI-Tests unterstützen. Weitere Informationen finden Sie unter UI Automator APIs. Benötigt Android 4.3 (API Level 18) oder höher. UI Automator Viewer Das uiautomatorviewer Tool bietet eine bequeme GUI zum Scannen und Analysieren der UI-Komponenten, die derzeit auf einem Android-Gerät angezeigt werden. Sie können dieses Werkzeug verwenden, um die Layouthierarchie zu prüfen und die Eigenschaften von UI-Komponenten anzuzeigen, die im Vordergrund des Geräts sichtbar sind. Mit dieser Information können Sie mit UI Automator mehr feinkörnige Tests erstellen, indem Sie beispielsweise einen UI-Selektor erstellen, der mit einer bestimmten sichtbaren Eigenschaft übereinstimmt. Das uiautomatorviewer-Tool befindet sich im Verzeichnis ltandroid-sdkgttools. Zugriff auf Gerätezustand Das UI-Automator-Test-Framework bietet eine UiDevice-Klasse für den Zugriff und die Ausführung von Operationen auf dem Gerät, auf dem die Ziel-App läuft. Sie können ihre Methoden aufrufen, um auf Geräteeigenschaften wie aktuelle Ausrichtung oder Anzeigegröße zuzugreifen. Die UiDevice-Klasse ermöglicht es Ihnen auch, Aktionen auszuführen, wie zB: Ändern der Gerätedrehung Drücken Sie eine D-Pad-Taste. Drücken Sie die Tasten Zurück, Home oder Menüs. Öffnen Sie den Benachrichtigungsschatten Nehmen Sie einen Screenshot des aktuellen Fensters. Zum Beispiel, um eine Home-Taste zu simulieren, drücken Sie , Rufen Sie die UiDevice. pressHome () - Methode auf. UI Automator APIs Die UI Automator APIs erlauben Ihnen, robuste Tests zu schreiben, ohne über die Implementierungsdetails der App zu erfahren, die Sie ansprechen. Sie können diese APIs verwenden, um UI-Komponenten über mehrere Apps zu erfassen und zu manipulieren: UiCollection. Aufzählung von Container-UI-Elementen zum Zählen oder Ausrichten von Unterelementen durch ihre sichtbare Text - oder Inhaltsbeschreibungseigenschaft. UiObject Stellt ein UI-Element dar, das auf dem Gerät sichtbar ist. UiScrollable Bietet Unterstützung für die Suche nach Elementen in einem scrollbaren UI-Container. UiSelector Stellt eine Abfrage für ein oder mehrere Ziel-UI-Elemente auf einem Gerät dar. Konfigurator Ermöglicht es Ihnen, wichtige Parameter für die Ausführung von UI Automator Tests festzulegen. Zum Beispiel zeigt der folgende Code, wie Sie ein Test-Skript schreiben können, das den Standard-App-Launcher im Gerät aufruft: Weitere Informationen zur Verwendung von UI Automator finden Sie im API-Referenz - und Test-UI für Multiple Apps-Training. Testing Support Library Setup Das Android Testing Support Library Paket ist in der neuesten Version des Android Support Repository enthalten, die Sie als ergänzender Download über den Android SDK Manager erhalten können. So laden Sie das Android Support Repository über den SDK Manager herunter: Starten Sie den Android SDK Manager. Im SDK-Manager-Fenster blättern Sie zum Ende der Pakete Liste, finden Sie den Extras-Ordner und, falls erforderlich, erweitern, um seinen Inhalt zu zeigen. Wählen Sie das Android Support Repository Element aus. Klicken Sie auf die Pakete installieren. Taste. Nach dem Herunterladen installiert das Tool die Support Repository-Dateien in Ihr bestehendes Android SDK-Verzeichnis. Die Bibliotheksdateien befinden sich im folgenden Unterverzeichnis Ihres SDK: ltsdkgtextrasandroidm2repository-Verzeichnisses. Die Android Testing Support Library Klassen befinden sich unter dem android. support. test Paket. Um die Android Testing Support-Bibliothek in deinem Gradle-Projekt zu verwenden, füge diese Abhängigkeiten in deiner build. gradle-Datei hinzu: Um AndroidJUnitRunner als Standard-Testinstrumentations-Läufer in deinem Gradle-Projekt festzulegen, spezifiziere diese Abhängigkeit in deiner build. gradle-Datei: Es wird dringend empfohlen Dass Sie die Android Testing Support Library zusammen mit der Android Studio IDE verwenden. Android Studio bietet Funktionen, die Test-Entwicklung unterstützen, wie zB: Flexible Gradle-basierte Build-System, das die Abhängigkeitsverwaltung für Ihren Testcode unterstützt. Einzelne Projektstruktur, um Ihr Gerät und den instrumentierten Testcode zusammen mit Ihrem App-Quellcode zu enthalten Unterstützung für das Bereitstellen und Ausführen von Tests an Virtuelle oder physikalische Geräte, von einer Befehlszeile oder grafische Benutzeroberfläche Weitere Informationen über Android Studio und zum Herunterladen finden Sie unter Android Studio und SDK Tools herunterladen. Holen Sie sich Nachrichten amp Tipps Melden Sie sich für den Newsletter Android-Entwickler auf YouTube Android-Entwickler auf Google Android-Entwickler auf Twitter

No comments:

Post a Comment