Interfaccia utente per applicazioni multiple

Android supporta il test dell'interfaccia utente che coinvolge più di un'applicazione. Consideriamo che la nostra applicazione ha un'opzione per passare dalla nostra applicazione all'applicazione di messaggistica per inviare un messaggio e quindi tornare alla nostra applicazione. In questo scenario, il framework di test dell'automazione dell'interfaccia utente ci aiuta a testare l'applicazione. L'automazione dell'interfaccia utente può essere considerato un buon compagno per il framework di test dell'espresso. Possiamo sfruttare l' opzione intending () nel framework di test espresso prima di optare per l' automazione dell'interfaccia utente .

Istruzioni di installazione

Android fornisce l'automazione dell'interfaccia utente come plug-in separato. Deve essere configurato nell'app / build.gradle come specificato di seguito,

dependencies {
   ...
   androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}

Flusso di lavoro per la scrittura di un test case

Facci capire come scrivere un test case basato su UI Automator ,

  • Ottieni l' oggetto UiDevice chiamando il metodo getInstance () e passando l' oggetto Instrumentation .

myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
myDevice.pressHome();
  • Ottieni l' oggetto UiObject utilizzando il metodo findObject () . Prima di utilizzare questo metodo, è possibile aprire l' applicazione uiautomatorviewer per ispezionare i componenti dell'interfaccia utente dell'applicazione di destinazione poiché la comprensione dell'applicazione di destinazione ci consente di scrivere casi di test migliori.

UiObject button = myDevice.findObject(new UiSelector()
   .text("Run")
   .className("android.widget.Button"));
  • Simula l'interazione dell'utente chiamando il metodo di UiObject . Ad esempio, setText () per modificare un campo di testo e fare clic su () per attivare un evento clic di un pulsante.

if(button.exists() && button.isEnabled()) {
   button.click();
}
  • Infine, controlliamo se l'interfaccia utente riflette lo stato previsto.