Создавайте тесты пользовательского интерфейса с помощью Espresso Test Recorder

Инструмент Espresso Test Recorder позволяет создавать UI-тесты для вашего приложения без написания какого-либо тестового кода. Записав тестовый сценарий, вы можете зафиксировать взаимодействие с устройством и добавить утверждения для проверки элементов пользовательского интерфейса в конкретных снимках вашего приложения. Затем Espresso Test Recorder берет сохраненную запись и автоматически генерирует соответствующий UI-тест, который вы можете запустить для проверки вашего приложения.

Espresso Test Recorder пишет тесты на основе фреймворка Espresso Testing , API из AndroidX Test. API Espresso позволяет создавать лаконичные и надежные UI-тесты, основанные на действиях пользователя. Задавая ожидания, взаимодействия и утверждения без прямого доступа к базовым активностям и представлениям приложения, такая структура предотвращает нестабильность тестов и оптимизирует скорость их выполнения.

Отключите анимацию на тестовом устройстве.

Перед использованием Espresso Test Recorder убедитесь, что анимация на тестовом устройстве отключена, чтобы предотвратить неожиданные результаты. Следуйте инструкциям по настройке Espresso , но обратите внимание, что вам не нужно вручную устанавливать ссылку на библиотеку Espresso, поскольку Test Recorder делает это автоматически при сохранении записи . Эти шаги необходимо выполнить только один раз для каждого проекта.

Запишите тест эспрессо.

Тесты Espresso состоят из двух основных компонентов: взаимодействия с пользовательским интерфейсом и утверждений для элементов представления. Взаимодействие с пользовательским интерфейсом включает действия касания и ввода текста, которые пользователь может использовать для взаимодействия с вашим приложением. Утверждения проверяют наличие или содержимое визуальных элементов на экране. Например, тест Espresso для приложения «Заметки» может включать взаимодействие с пользовательским интерфейсом при нажатии на кнопку и написании новой заметки, но будет использовать утверждения для проверки наличия кнопки и содержимого заметки.

В этом разделе мы рассмотрим, как создать оба этих тестовых компонента с помощью Espresso Test Recorder, а также как сохранить готовую запись для генерации теста.

Запись взаимодействий с пользовательским интерфейсом

Для начала записи теста с помощью Espresso Test Recorder выполните следующие действия:

  1. Нажмите «Выполнить» > «Записать тест Espresso» .
  2. В окне «Выбор целевого устройства развертывания» выберите устройство, на котором вы хотите записать тест. При необходимости создайте новое виртуальное устройство Android . Нажмите «ОК» .
  3. Espresso Test Recorder запускает сборку вашего проекта, и приложение должно быть установлено и запущено, прежде чем Espresso Test Recorder позволит вам взаимодействовать с ним. После запуска приложения появляется окно «Запись теста» , и, поскольку вы еще не взаимодействовали с устройством, на главной панели отображается сообщение «События еще не записаны». Взаимодействуйте с устройством, чтобы начать регистрировать такие события, как «касание» и «ввод текста».

Примечание : Прежде чем начать запись взаимодействий, на вашем устройстве может появиться диалоговое окно с надписью «Ожидание отладчика» или «Подключение отладчика». Espresso Test Recorder использует отладчик для записи событий пользовательского интерфейса. После подключения отладчика диалоговое окно автоматически закроется; не нажимайте кнопку «Принудительное закрытие» .

Записанные действия отобразятся на главной панели в окне «Запись теста» , как показано на рисунке 1 ниже. При запуске теста Espresso попытается выполнить эти действия в том же порядке.

Рисунок 1. Окно «Запись теста» с зарегистрированными взаимодействиями с пользовательским интерфейсом.

Добавьте утверждения для проверки элементов пользовательского интерфейса.

Утверждения проверяют существование или содержимое элемента View с помощью трех основных типов:

  • text is : Проверяет текстовое содержимое выбранного элемента View.
  • exists : Проверяет, присутствует ли элемент View в текущей иерархии представлений, видимой на экране.
  • не существует : Проверяет, отсутствует ли элемент View в текущей иерархии View.

Чтобы добавить утверждение в тест, выполните следующие действия:

  1. Нажмите «Добавить утверждение» . Появится диалоговое окно «Снимок экрана» , в котором Espresso получит иерархию пользовательского интерфейса и другую информацию о текущем состоянии приложения. Диалоговое окно автоматически закроется после того, как Espresso сделает снимок экрана.
  2. В правой панели окна «Запись теста » отображается схема текущего экрана. Чтобы выбрать элемент представления, для которого нужно создать утверждение, щелкните по элементу на скриншоте или воспользуйтесь первым выпадающим меню в поле «Редактировать утверждение » внизу окна. Выбранный объект представления будет выделен красной рамкой.
  3. Выберите нужное утверждение из второго выпадающего меню в поле «Редактировать утверждение» . Espresso заполнит меню допустимыми утверждениями для выбранного элемента представления.
    • Если вы выберете утверждение «текст есть», Espresso автоматически вставит текст, находящийся в данный момент внутри выбранного элемента View. Вы можете отредактировать текст, чтобы он соответствовал желаемому утверждению, используя текстовое поле в окне «Редактировать утверждение» .
  4. Нажмите «Сохранить и добавить еще одно» , чтобы создать еще одно утверждение, или нажмите «Сохранить утверждение» , чтобы закрыть панели утверждений.

На скриншоте на рисунке 2 показано создание утверждения "текст равен", чтобы проверить, что заголовок заметки — "Happy Testing!":

Рисунок 2. Окно подтверждения редактирования после выбора элемента View (выделено красным).

При создании утверждения вы можете продолжать взаимодействовать с приложением, даже если панели утверждений остаются открытыми в окне «Запись теста» . Espresso Test Recorder будет продолжать записывать ваши действия, но редактируемое утверждение будет отображаться перед этими взаимодействиями после его сохранения. Скриншот утверждения также сохраняет расположение элементов на устройстве или эмуляторе в момент нажатия кнопки «Добавить утверждение» .

Сохранить запись

После завершения взаимодействия с приложением и добавления утверждений выполните следующие шаги, чтобы сохранить запись и сгенерировать тест Espresso:

  1. Нажмите «Завершить запись» . Появится окно «Выберите имя тестового класса для вашего теста» .
  2. Espresso Test Recorder присваивает вашему тесту уникальное имя внутри пакета на основе имени запущенной активности. Используйте текстовое поле « Имя класса теста», если хотите изменить предлагаемое имя. Нажмите «Сохранить» .
    • Если вы не добавили зависимости Espresso в свое приложение, при попытке сохранить тест появится диалоговое окно « Отсутствуют зависимости Espresso» . Нажмите «Да» , чтобы автоматически добавить зависимости в файл build.gradle .
  3. Файл автоматически открывается после его генерации программой Espresso Test Recorder, и Android Studio отображает выбранный тестовый класс в окне Project среды разработки.
    • Место сохранения теста зависит от расположения корневого каталога ваших инструментальных тестов , а также от имени пакета запущенной активности. Например, тесты для приложения «Заметки» сохраняются в папке src > androidTest > java > com.example.username.appname модуля приложения, для которого вы записали тест.

Проведите тест приготовления эспрессо локально.

Для проведения теста Espresso используйте проект . Окно в левой части среды разработки Android Studio:

  1. Откройте папку нужного модуля приложения и перейдите к тесту, который хотите запустить. Местоположение теста зависит от расположения корневого каталога инструментальных тестов и имени пакета запущенной активности. Следующие примеры показывают, где будет сохраняться тест для приложения Notes :
    • Если вы используете представление Android внутри окна, перейдите по пути java > com.example.username.appname (androidTest) .
    • Если вы используете представление проекта внутри окна, перейдите в папку модуля по пути src > androidTest > java > com.example.username.appname .
  2. Щелкните правой кнопкой мыши по тесту и выберите «Выполнить 'testName'».
    • В качестве альтернативы вы можете открыть тестовый файл и щелкнуть правой кнопкой мыши по сгенерированному тестовому классу или методу. Подробнее о запуске тестов читайте на странице «Тестирование приложения» .
  3. В окне «Выбор целевого устройства развертывания» выберите устройство, на котором вы хотите запустить тест. При необходимости создайте новое виртуальное устройство Android . Нажмите «ОК» .

Отслеживайте ход выполнения теста в окне «Выполнение» в нижней части IDE. Android Studio выполняет полную сборку вашего проекта и открывает вкладку с именем вашего теста в окне «Выполнение» , как показано на рисунке 3. На этой вкладке вы можете проверить, прошел ли тест или нет, а также узнать, сколько времени заняло его выполнение. После завершения теста во вкладке появится запись «Тесты выполнены до конца».

Рисунок 3. Пример выходных данных в окне «Выполнение» после локального запуска теста Espresso.

Чтобы узнать больше о написании конфигураций запуска тестов, прочтите раздел «Определение конфигурации теста для класса или метода» в руководстве «Создание и редактирование конфигураций запуска/отладки ».

Запустите тест Espresso с помощью Firebase Test Lab для Android.

Вы можете использовать тесты, сгенерированные Espresso Test Recorder, с Firebase Test Lab для тестирования вашего приложения в облаке на сотнях конфигураций устройств. Тестирование вашего приложения с помощью Test Lab бесплатно в рамках бесплатной ежедневной квоты плана Spark . Чтобы запустить тесты Espresso с Firebase Test Lab, создайте проект Firebase для вашего приложения, а затем следуйте инструкциям по запуску тестов с Firebase Test Lab из Android Studio.

Рисунок 4. Пример выходных данных в окне «Выполнение» после запуска теста с помощью Firebase Test Lab на нескольких устройствах.