Android Studio позволяет легко тестировать приложения. В нем есть множество функций, которые упрощают создание, запуск и анализ тестов. Вы можете настроить тесты, которые будут выполняться на вашем локальном компьютере, или инструментальные тесты, которые будут выполняться на устройстве. Вы можете легко запустить один тест или определенную группу тестов на одном или нескольких устройствах. Результаты тестирования показываются прямо в Android Studio.
Рисунок 1. Обзор результатов тестирования в Android Studio.
На этой странице рассказывается, как управлять тестами в Android Studio. Подробнее о том, как писать автоматизированные тесты для Android…
Типы тестов и места их проведения
Расположение тестов зависит от их типа. В проектах Android есть каталоги исходного кода по умолчанию для локальных модульных и инструментальных тестов.
Локальные модульные тесты находятся в каталоге module-name/src/test/java/. Это тесты, которые выполняются на локальной виртуальной машине Java (JVM) вашего компьютера. Используйте эти тесты, чтобы минимизировать время выполнения, когда у ваших тестов нет зависимостей от фреймворка Android или когда вы можете создать тестовые двойники для зависимостей от фреймворка Android.
Подробнее о том, как создавать локальные модульные тесты…
Инструментальные тесты находятся в каталоге $module-name/src/androidTest/java/.
Эти тесты выполняются на аппаратном устройстве или эмуляторе. Они имеют доступ к API Instrumentation, которые позволяют получать информацию о тестируемом приложении, например о классе Context, и управлять им с помощью тестового кода. Инструментальные тесты встроены в отдельный APK-файл, поэтому у них есть собственный файл AndroidManifest.xml. Этот файл создается автоматически, но вы можете создать собственную версию в $module-name/src/androidTest/AndroidManifest.xml, которая будет объединена со сгенерированным манифестом. Используйте инструментальные тесты, когда пишете интеграционные и функциональные тесты интерфейса для автоматизации взаимодействия с пользователем или когда ваши тесты имеют зависимости Android, для которых вы не можете создать тестовые двойники.
Подробнее о том, как писать инструментальные тесты, рассказывается в статьях Создание инструментальных тестов и Автоматизация тестирования интерфейса.
Вы можете поместить тесты в каталоги, относящиеся к определенным вариантам сборки, чтобы тестировать только их. Например, вы можете поместить некоторые локальные модульные тесты в $module-name/src/testMyFlavor/java/, чтобы они были нацелены на ваше приложение, созданное с использованием исходного кода этой версии. Подробнее о том, как создать инструментальный тест для варианта сборки…
Когда вы создаете проект или добавляете модуль приложения, Android Studio создает наборы исходных файлов для тестирования, перечисленные выше, и добавляет в каждый из них пример тестового файла. Их можно увидеть в окне Project (Проект), как показано на рисунке 2.
Рисунок 2. 1) Инструментальные тесты и 2) локальные тесты JVM вашего проекта видны в представлении Project (Проект) (слева) или Android (справа).
Создание новых тестов
Вы можете добавить новый тест для определенного класса или метода прямо из его исходного кода. Для этого выполните следующие действия:
- Откройте исходный файл с кодом, который нужно протестировать.
- Поместите курсор на название класса или метода, который хотите протестировать, и нажмите Ctrl + Shift + T (Command + Shift + T в macOS).
- Во всплывающем окне нажмите Создать тестирование.
- В диалоговом окне Create Test (Создать тест) выберите JUnit4, отредактируйте поля и методы, которые нужно сгенерировать, и нажмите OK.
- В диалоговом окне Choose Destination Directory (Выбор целевого каталога) нажмите на набор исходных файлов, соответствующий типу теста, который вы хотите создать: androidTest для инструментального теста или test для локального модульного тестирования. Затем нажмите ОК.
Вы также можете создать общий тестовый файл в соответствующем наборе исходных файлов, как показано ниже.
- В окне Project (Проект) слева нажмите на раскрывающееся меню и выберите представление Android.
- Нажмите правой кнопкой мыши на каталог java и выберите New (Создать) > Java Class (Класс Java) или New (Создать) > Kotlin Class/File (Класс/файл Kotlin). Вы также можете выбрать каталог java и нажать Ctrl + N (Cmd + N в macOS).
- В диалоговом окне Choose Destination Directory (Выбор целевого каталога) нажмите на набор исходных файлов, соответствующий типу теста, который вы хотите создать: androidTest для инструментального теста или test для локального модульного тестирования. Затем нажмите ОК.
- Введите название файла и нажмите ОК.
Если после добавления теста приложение не компилируется, убедитесь, что вы настроили правильные зависимости тестовой библиотеки. Информацию о правильных зависимостях можно найти в статьях Как создавать локальные тесты и Как создавать инструментальные тесты.
Выполнить тесты
Перед запуском тестов убедитесь, что проект полностью синхронизирован с Gradle. Для этого нажмите Sync Project (Синхронизировать проект)
на панели инструментов. Вы можете проводить тестирование с разным уровнем детализации:
Чтобы запустить все тесты в каталоге или файле, откройте окно Project (Проект) и выполните одно из следующих действий:
- Нажмите правой кнопкой мыши на каталог или файл и выберите Run (Запустить)
. - Выберите каталог или файл и нажмите Ctrl + Shift + R.
- Нажмите правой кнопкой мыши на каталог или файл и выберите Run (Запустить)
Чтобы запустить все тесты в классе или определенном методе, откройте файл теста в редакторе кода и выполните одно из следующих действий:
- Нажмите на значок Запустить тест
на боковой панели. - Нажмите правой кнопкой мыши на тестовый класс или метод и выберите Run (Запустить)
. - Выберите тестовый класс или метод и нажмите Ctrl + Shift + R.
- Нажмите на значок Запустить тест
Инструментальные тесты будут выполняться на физическом устройстве или эмуляторе. Подробнее о том, как запускать приложения на физических устройствах… Подробнее о том, как запускать приложения в эмуляторе Android…
Настройте тестовый запуск
По умолчанию тесты запускаются с использованием конфигурации запуска Android Studio по умолчанию. Если вам нужно изменить некоторые настройки запуска, например средство запуска инструментирования и параметры развертывания, вы можете изменить конфигурацию запуска в диалоговом окне Run/Debug Configurations (Конфигурации запуска/отладки) (нажмите Run > Edit Configurations (Запуск > Изменить конфигурации)).
Унифицированный инструмент запуска тестов Gradle
Плагин Android Gradle 7.1.0 и Android Studio Bumblebee и более поздних версий используют собственную реализацию Gradle для запуска инструментальных тестов Android. Использование одного и того же средства запуска тестов позволяет получать согласованные результаты независимо от того, запускаете ли вы тесты с помощью AGP из командной строки (например, на сервере непрерывной интеграции) или из Android Studio.
Рисунок 3. Единый инструмент запуска тестов Gradle.
В предыдущих версиях Android Studio вместо Gradle используется IntelliJ Android. Если вы не используете последнюю версию Android Studio, то в зависимости от того, запускаете ли вы тесты из Android Studio или из командной строки с помощью плагина Gradle, вы можете увидеть разные результаты тестов, например, тесты, пройденные с помощью одного средства запуска и не пройденные с помощью другого.
Рисунок 4. Отдельные средства запуска тестов в более ранних версиях Android Studio.
Если в вашем проекте уже сохранены конфигурации инструментальных тестов, они будут использовать Gradle для запуска тестов на подключенном устройстве. Вы можете создать новую конфигурацию инструментального теста, используя действие на полях рядом с тестовым классом или методом, как показано ниже.
Рисунок 5. Запустите тесты с помощью действия на полях.
При выполнении инструментальных тестов можно убедиться, что Android Studio использует средство запуска тестов Gradle, проверив выходные данные теста в матрице тестов для выходных данных задачи Gradle.
Запуск на нескольких устройствах одновременно
По умолчанию инструментальные тесты выполняются на одном физическом устройстве или эмуляторе. Если вы хотите посмотреть, как ваши тесты работают на большем количестве устройств, вы можете выбрать дополнительные устройства, выполнив следующие действия:
Перед запуском тестов откройте раскрывающееся меню целевых устройств и выберите Select Multiple Devices… (Выбрать несколько устройств…).
Рисунок 6. Выберите раскрывающееся меню "Несколько устройств".
Выберите нужные устройства и нажмите ОК.
Убедитесь, что в раскрывающемся меню целевых устройств выбрано Multiple Devices (Несколько устройств), и нажмите Run (Запустить)
.В окне инструмента Test Matrix (Матрица тестов) показаны результаты тестирования для каждой выбранной конфигурации устройства.
Рисунок 7. Результаты тестирования в окне инструмента "Матрица тестов".
Чтобы посмотреть результат определенного теста, нажмите на него. Вы также можете отсортировать тесты, нажав на заголовок нужного столбца.
Запустить с помощью Firebase Test Lab
С помощью Firebase Test Lab вы можете одновременно тестировать приложение на множестве популярных устройств Android и в различных конфигурациях (с разными языками, ориентациями экрана, размерами экрана и версиями платформы). Тесты выполняются на физических и виртуальных устройствах в удаленных центрах обработки данных Google. В результатах тестирования содержатся журналы тестирования и подробные сведения о сбоях в работе приложения.
Чтобы начать работу с Firebase Test Lab, выполните следующие действия:
- Если у вас нет аккаунта Google, создайте его.
- В консоли Firebase нажмите Create New Project (Создать проект).
В Android Studio есть встроенные инструменты, позволяющие настроить развертывание тестов в Firebase Test Lab. После создания проекта Firebase вы можете создать тестовую конфигурацию и запустить тесты.
- В главном меню выберите Run (Запустить) > Edit Configurations (Изменить конфигурации).
- Нажмите Add New Configuration (Добавить конфигурацию)
и выберите Android Instrumented Tests (Инструментальные тесты Android). - Введите или выберите сведения о тесте, например название, тип модуля, тип теста и класс теста.
- В раскрывающемся меню Target (Цель) в разделе Deployment Target Options (Параметры цели развертывания) выберите Firebase Test Lab Device Matrix (Матрица устройств Firebase Test Lab).
- Если вы не вошли в систему, нажмите Войти с аккаунтом Google и разрешите Android Studio доступ к вашему аккаунту.
- В разделе Облачный проект выберите проект Firebase из списка.
- В разделе Конфигурация матрицы выберите одну из конфигураций по умолчанию в раскрывающемся списке или создайте собственную, нажав Открыть диалоговое окно
.
Вы можете выбрать одно или несколько устройств, версий Android, языков и ориентаций экрана, на которых хотите протестировать приложение. Firebase Test Lab протестирует ваше приложение на всех выбранных вами комбинациях. - Нажмите OK в диалоговом окне Run/Debug Configurations (Конфигурации выполнения/отладки), чтобы закрыть его.
- Запустите тесты, нажав Run (Запустить)
.
Рисунок 8. Создание тестовой конфигурации для Firebase Test Lab.
Как анализировать результаты теста
Когда Firebase Test Lab завершит выполнение тестов, откроется окно Run (Выполнение) с результатами, как показано на рисунке 9. Чтобы увидеть все выполненные тесты, нажмите Показать пройденные
.
Рисунок 9. Результаты инструментальных тестов, выполненных с помощью Firebase Test Lab.
Вы также можете анализировать тесты в интернете, перейдя по ссылке, которая указана в начале журнала выполнения тестов в окне Run (Выполнение).
Посмотреть покрытие тестами
Инструмент покрытия тестами позволяет отслеживать, какая часть кода приложения и какие его области охвачены локальными модульными тестами. Используйте инструмент тестового покрытия, чтобы определить, достаточно ли вы протестировали элементы, классы, методы и строки кода, из которых состоит ваше приложение.
Чтобы запустить тесты с покрытием, выполните те же действия, что и в разделе Запуск тестов, но вместо Запустить
нажмите Запустить название-теста с покрытием
. В окне Project (Проект) этот параметр может быть скрыт за пунктом More Run/Debug (Ещё запуск/отладка). Вы также можете задать настройки покрытия в диалоговом окне Run/Debug Configurations (Конфигурации выполнения/отладки) на вкладке Code Coverage (Покрытие кода).
Рисунок 10. Процент покрытия кода для приложения.
Просмотр результатов
Когда вы запускаете один или несколько тестов в Android Studio, результаты появляются в окне Run (Запуск). На рисунке 11 показан успешный тестовый запуск.
Рисунок 11. Результаты тестирования появятся в окне Run (Выполнение).
В окне Run (Запуск) слева в виде дерева будут показаны тесты, а справа на панели вывода – результаты и сообщения для текущего набора тестов. Для управления результатами тестирования используйте панели инструментов, контекстные меню и значки статуса.
- Используйте панель инструментов запуска, чтобы повторно запустить текущий тест, остановить его, повторно запустить неудачные тесты (не показано, поскольку доступно только для модульного тестирования), приостановить вывод и сбросить потоки.
- Используйте панель инструментов тестирования, чтобы фильтровать и сортировать результаты тестов. Вы также можете разворачивать и сворачивать узлы, просматривать тестовое покрытие, а также импортировать и экспортировать результаты тестирования.
- Нажмите на контекстное меню, чтобы отслеживать запущенный тест, показывать встроенную статистику, прокручивать до трассировки стека, открывать исходный код при исключении, автоматически прокручивать до источника и выбирать первый неудачный тест после завершения тестового запуска.
- Значки статуса теста указывают, произошла ли ошибка, был ли тест проигнорирован, не пройден, выполняется, пройден, приостановлен, завершен или не запущен.
- Нажмите правой кнопкой мыши на строку в дереве аккаунта, чтобы открыть контекстное меню, в котором можно запустить тесты в режиме отладки, открыть файл с исходным кодом теста или перейти к строке в тестируемом исходном коде.
Анализ сбоев при тестировании
Если один или несколько тестов не пройдены, в окне результатов появится предупреждающий знак и количество сбоев (например, "Тесты не пройдены: 1"):
Рисунок 12. Сведения о неудачном тесте на панели вывода.
Если нажать на непройденный тест в дереве аккаунта слева, на панели вывода справа появятся подробные сведения о нем. Оно показывает ожидаемое значение рядом с фактическим значением, чтобы вы могли их сравнить. Ссылка Нажмите, чтобы увидеть разницу открывает окно, в котором можно сравнить результаты.
Подробнее…
На этой странице описаны основные шаги по созданию и запуску первого теста в Android Studio. Вы также можете запустить тесты из командной строки. Вы также можете ознакомиться с документацией IntelliJ по тестированию. Подробнее о том, как настроить тесты при создании большого набора тестов…