Benutzeroberfläche für mehrere Anwendungen
Android unterstützt das Testen von Benutzeroberflächen, an denen mehr als eine Anwendung beteiligt ist. Nehmen wir an, unsere Anwendung hat die Option, von unserer Anwendung zur Messaging-Anwendung zu wechseln, um eine Nachricht zu senden, und kehrt dann zu unserer Anwendung zurück. In diesem Szenario hilft uns das UI-Automator-Testframework beim Testen der Anwendung. Der UI-Automator kann als guter Begleiter für das Espresso-Test-Framework angesehen werden. Wir können die Option intending () im Espresso-Test-Framework nutzen, bevor wir uns für UI Automator entscheiden .
Setup-Anweisung
Android bietet UI Automator als separates Plugin. Es muss in der app / build.gradle wie unten angegeben konfiguriert werden.
dependencies {
...
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}
Workflow zum Schreiben von Testfällen
Lassen Sie uns verstehen, wie ein UI Automator- basierter Testfall geschrieben wird.
Rufen Sie das UiDevice- Objekt ab, indem Sie die Methode getInstance () aufrufen und das Instrumentation- Objekt übergeben.
myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
myDevice.pressHome();
Holen UIObject - Objekt der Verwendung von Findobject () Methode. Bevor wir diese Methode verwenden, können wir die Anwendung uiautomatorviewer öffnen , um die UI-Komponenten der Zielanwendung zu überprüfen , da wir durch das Verständnis der Zielanwendung bessere Testfälle schreiben können.
UiObject button = myDevice.findObject(new UiSelector()
.text("Run")
.className("android.widget.Button"));
Simulieren Sie die Benutzerinteraktion, indem Sie die Methode von UiObject aufrufen . Setzen Sie beispielsweise setText () , um ein Textfeld zu bearbeiten, und klicken Sie auf () , um ein Klickereignis einer Schaltfläche auszulösen .
if(button.exists() && button.isEnabled()) {
button.click();
}
Schließlich prüfen wir, ob die Benutzeroberfläche den erwarteten Status widerspiegelt.