Пользовательский интерфейс для нескольких приложений
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();
}
Наконец, мы проверяем, отражает ли пользовательский интерфейс ожидаемое состояние.