Simulieren von Wischgesten auf dem Surface Duo
UiAutomator ist ein Testframework, das appübergreifende Testfunktionen und Zugriff auf Gerätesensoren bietet. Mithilfe der swipe
-Methode aus der Klasse UiDevice und den Gerätedimensionen können Sie im Rahmen von Tests verschiedene Gesten auf dem Surface Duo simulieren.
Das Testkit stellt Hilfsfunktionen zur Verfügung, die Wischvorgänge zwischen verschiedenen Koordinaten ausführen, um die übergreifende Darstellung einer App, das Aufheben der übergreifenden Darstellung, den Wechsel der Bildschirme für eine App und das Schließen einer App zu simulieren.
Setup
Erstellen Sie eine neue Testklassendatei im Verzeichnis androidTest. Hier fügen Sie später die Codeausschnitte für Testregeln und Tests hinzu.
Achten Sie darauf, das
mavenCentral()
-Repository in Ihre build.gradle-Datei der obersten Ebene aufzunehmen:allprojects { repositories { google() mavenCentral() } }
Fügen Sie Ihrer build.gradle-Datei auf Modulebene die folgenden Abhängigkeiten hinzu (die aktuelle Version weicht möglicherweise von der hier gezeigten ab):
androidTestImplementation "com.microsoft.device.dualscreen.testing:testing-kotlin:1.0.0-alpha4" androidTestImplementation "androidx.test.uiautomator:uiautomator:2.2.0" androidTestImplementation "androidx.test.espresso:espresso-core:3.4.0" androidTestImplementation "androidx.test:runner:1.4.0" androidTestImplementation "androidx.test:rules:1.4.0"
Stellen Sie sicher, dass der
compileSdkVersion
auf API 33 festgelegt ist und intargetSdkVersion
der Build.gradle-Datei auf Modulebene auf API 32 oder höher festgelegt ist:android { compileSdkVersion 33 defaultConfig { targetSdkVersion 32 } ... }
Erstellen Sie innerhalb Ihrer Testklasse eine
TestRule
- und eineUiDevice
-Instanz.Wenn Sie Espresso zum Testen von Ansichten verwenden, achten Sie darauf, auf Ihrem Gerät Animationen zu deaktivieren.
Schreiben von Tests
In den Testkitbibliotheken bieten wir Optionen zum Ausführen von Anzeigevorgängen auf dem Surface Duo. Alle diese Methoden verwenden die Wischmethode von UiDevice
, um Wischgesten zwischen verschiedenen Koordinaten zu simulieren. Damit Ihre Tests so zuverlässig wie möglich werden, empfiehlt es sich, Assertionen und Überprüfungen zwischen den Wischvorgängen durchzuführen und die Anzahl der in jedem Test ausgeführten Wischvorgänge zu minimieren.
Befolgen Sie diese Schritte, um einen Test zu schreiben, der Wischgesten verwendet:
- Ausführen einer Wischgeste
- Bestätigen, dass sich die Benutzeroberfläche wie erwartet geändert hat
Der Beispieltest unten veranschaulicht einen einfachen UI-Test für eine App, die im überspannenden Modus zwei Bereiche anzeigt.
@Test
fun testSpan() {
onView(withText("pane 1")).check(matches(isDisplayed()))
// 1. Perform swipe gesture
device.spanFromStart()
// 2. Assert that UI has changed as expected
onView(withText("pane 1")).check(matches(isDisplayed()))
onView(withText("pane 2")).check(matches(isDisplayed()))
}
Die folgende Animation zeigt, wie testSpan
beim Ausführen auf dem Surface Duo-Emulator aussieht:
Beispiele
Weitere Beispiele für die Verwendung simulierter Wischgesten in Surface Duo-Tests finden Sie in diesen Ressourcen:
- Surface Duo SDK
- ComposeTesting-Bibliotheksbeispiel
- FoldingVideo
- PhotoEditor
- SourceEditor
- TwoNote
- Beispiel für die Dual-Screen-Erfahrung
Ressourcen
Weitere Informationen zu instrumentierten Tests und UiAutomator finden Sie in diesen Ressourcen: