Пользовательский интерфейс для нескольких приложений

Android поддерживает тестирование пользовательского интерфейса, в котором участвует более одного приложения. Давайте рассмотрим, что у нашего приложения есть возможность перейти от нашего приложения к приложению обмена сообщениями, чтобы отправить сообщение, а затем вернуться в наше приложение. В этом сценарии среда тестирования UI-автомата помогает нам тестировать приложение. UI-автомат можно считать хорошим компаньоном для фреймворка для тестирования эспрессо. Мы можем использовать опцию intending () в среде тестирования эспрессо, прежде чем выбирать UI-автомат .

Инструкция по установке

Android предоставляет автоматизатор пользовательского интерфейса как отдельный плагин. Его необходимо настроить в app / build.gradle, как указано ниже,

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

Рабочий процесс для написания тестового случая

Давайте разберемся, как написать тестовый пример на основе UI Automator ,

  • Получите объект UiDevice , вызвав метод getInstance () и передав объект Instrumentation .

myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
myDevice.pressHome();
  • Получите объект UiObject с помощью метода findObject () . Перед использованием этого метода мы можем открыть приложение uiautomatorviewer для проверки компонентов пользовательского интерфейса целевого приложения, поскольку понимание целевого приложения позволяет нам писать лучшие тестовые примеры.

UiObject button = myDevice.findObject(new UiSelector()
   .text("Run")
   .className("android.widget.Button"));
  • Имитируйте взаимодействие с пользователем, вызывая метод UiObject . Например, setText () для редактирования текстового поля и click () для активации события нажатия кнопки.

if(button.exists() && button.isEnabled()) {
   button.click();
}
  • Наконец, мы проверяем, отражает ли пользовательский интерфейс ожидаемое состояние.