Interfejs użytkownika dla wielu aplikacji

Android obsługuje testowanie interfejsu użytkownika, które obejmuje więcej niż jedną aplikację. Rozważmy, że nasza aplikacja ma możliwość przejścia z naszej aplikacji do aplikacji do przesyłania wiadomości, aby wysłać wiadomość, a następnie wraca do naszej aplikacji. W tym scenariuszu platforma testowania automatyzatora interfejsu użytkownika pomaga nam przetestować aplikację. Automatyzator interfejsu użytkownika można uznać za dobrego towarzysza we frameworku testowym espresso. Możemy wykorzystać opcję intending () we frameworku testowym espresso przed wyborem automatu UI .

Instrukcja konfiguracji

Android zapewnia automatyzację interfejsu użytkownika jako oddzielną wtyczkę. Musi być skonfigurowany w app / build.gradle jak określono poniżej,

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

Przepływ pracy przy pisaniu przypadku testowego

Pozwól nam zrozumieć, jak napisać przypadek testowy oparty na UI Automator ,

  • Pobierz obiekt UiDevice , wywołując metodę getInstance () i przekazując obiekt Instrumentation .

myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
myDevice.pressHome();
  • Pobierz obiekt UiObject za pomocą metody findObject () . Przed użyciem tej metody możemy otworzyć aplikację uiautomatorviewer , aby sprawdzić komponenty interfejsu użytkownika aplikacji docelowej, ponieważ zrozumienie aplikacji docelowej pozwala nam pisać lepsze przypadki testowe.

UiObject button = myDevice.findObject(new UiSelector()
   .text("Run")
   .className("android.widget.Button"));
  • Symuluj interakcję użytkownika, wywołując metodę UiObject . Na przykład setText (), aby edytować pole tekstowe i kliknij (), aby uruchomić zdarzenie kliknięcia przycisku.

if(button.exists() && button.isEnabled()) {
   button.click();
}
  • Na koniec sprawdzamy, czy interfejs użytkownika odzwierciedla oczekiwany stan.