Android Studio разработана для упрощения тестирования. Она содержит множество функций, упрощающих создание, запуск и анализ тестов. Вы можете настроить тесты для локального запуска на компьютере или инструментированные тесты для запуска на устройстве. Вы можете легко запустить один тест или группу тестов на одном или нескольких устройствах. Результаты тестов отображаются непосредственно в Android Studio.
Рисунок 1. Android Studio, отображающий обзор результатов теста.
Эта страница посвящена управлению тестами в Android Studio. Чтобы узнать, как писать автоматизированные тесты для Android, см. статью Тестирование приложений на 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, для которых вы не можете создать двойников тестов. Для получения дополнительной информации о том, как писать инструментированные тесты, см. Build instrumented tests и Automate UI tests .
Вы можете разместить тесты в каталогах, предназначенных для конкретных вариантов сборки, чтобы тестировать только определённые варианты. Например, можно разместить некоторые локальные модульные тесты в каталоге $module-name /src/ testMyFlavor /java/
, чтобы тесты были направлены на ваше приложение, собранное с использованием исходного кода этого варианта. Подробнее о создании таких специализированных тестов см. в статье Создание инструментированного теста для варианта сборки .
При создании нового проекта или добавлении модуля приложения Android Studio создаёт перечисленные ранее наборы исходных тестов и включает в каждый из них пример тестового файла. Вы можете увидеть их в окне «Проект» , как показано на рисунке 2.
Рисунок 2. Инструментированные тесты вашего проекта (1) и локальные тесты JVM (2) видны либо в представлении проекта (слева), либо в представлении Android (справа).
Создать новые тесты
Вы можете добавить новый тест для определенного класса или метода непосредственно из его исходного кода, выполнив следующие шаги:
- Откройте исходный файл, содержащий код, который вы хотите протестировать.
- Поместите курсор на имя класса или метода, который вы хотите протестировать, и нажмите Control+Shift+T ( Command+Shift+T в macOS).
- В появившемся всплывающем окне нажмите «Создать новый тест…».
- В диалоговом окне «Создать тест» выберите JUnit4 , отредактируйте поля и методы, которые вы хотите сгенерировать, а затем нажмите кнопку «ОК» .
- В диалоговом окне «Выбор целевого каталога» выберите исходный набор, соответствующий типу теста, который вы хотите создать: androidTest для инструментированного теста или test для локального модульного теста. Затем нажмите кнопку «ОК» .
В качестве альтернативы вы можете создать общий тестовый файл в соответствующем наборе исходных тестов следующим образом:
- В окне проекта слева щелкните раскрывающееся меню и выберите представление Android .
- Щёлкните правой кнопкой мыши по каталогу Java и выберите «Создать» > «Класс Java» или «Создать» > «Класс/Файл Kotlin» . Также можно выбрать каталог Java и использовать сочетание клавиш Control+N ( Command+N в macOS).
- В диалоговом окне «Выбор целевого каталога» выберите исходный набор, соответствующий типу теста, который вы хотите создать: androidTest для инструментированного теста или test для локального модульного теста. Затем нажмите кнопку «ОК» .
- Дайте имя файлу и нажмите кнопку «ОК» .
Если ваше приложение не компилируется после добавления теста, убедитесь, что у вас настроены правильные зависимости тестовой библиотеки. Сведения о правильных зависимостях см. в разделах «Сборка локальных тестов» и «Сборка инструментированных тестов» .
Проведение тестов
Перед запуском любых тестов убедитесь, что ваш проект полностью синхронизирован с Gradle, нажав «Синхронизировать проект». на панели инструментов. Вы можете запускать тесты с разной степенью детализации:
Чтобы запустить все тесты в каталоге или файле , откройте окно «Проект» и выполните одно из следующих действий:
- Щелкните правой кнопкой мыши по каталогу или файлу и выберите «Выполнить».
.
- Выберите каталог или файл и используйте сочетание клавиш Control+Shift+R .
- Щелкните правой кнопкой мыши по каталогу или файлу и выберите «Выполнить».
Чтобы запустить все тесты в классе или определенном методе , откройте тестовый файл в редакторе кода и выполните одно из следующих действий:
- Нажмите значок «Выполнить тест».
в сточной канаве .
- Щелкните правой кнопкой мыши по тестовому классу или методу и выберите «Выполнить».
.
- Выберите тестовый класс или метод и используйте сочетание клавиш Control+Shift+R .
- Нажмите значок «Выполнить тест».
Инструментированные тесты будут выполняться на физическом устройстве или эмуляторе. Подробнее о настройке физических устройств см. в разделе Запуск приложений на аппаратном устройстве . Подробнее о настройке эмуляторов см. в разделе Запуск приложений на эмуляторе Android .
Настройте тестовый запуск
По умолчанию тесты запускаются с использованием стандартной конфигурации Android Studio. Если вам нужно изменить некоторые параметры запуска, такие как инструментарий и параметры развертывания, вы можете изменить конфигурацию запуска в диалоговом окне « Конфигурации запуска/отладки» (щёлкните «Запуск» > «Изменить конфигурации» ).
Унифицированный инструмент для запуска тестов Gradle
Плагин Gradle для Android версии 7.1.0 и Android Studio Bumblebee и выше используют собственную реализацию инструментария для запуска инструментированных тестов Android от Gradle. Использование одного и того же инструмента для запуска тестов обеспечивает согласованность результатов независимо от того, запускаете ли вы AGP из командной строки, например, на сервере непрерывной интеграции, или из Android Studio.
Рисунок 3. Унифицированный исполнитель тестов Gradle.
В предыдущих версиях Android Studio использовался инструментарий IntelliJ Android для запуска тестов вместо инструментария Gradle Android. Поэтому, если вы не используете последнюю версию Android Studio, в зависимости от того, запускаете ли вы тесты из Android Studio или из командной строки с помощью плагина Gradle, вы можете увидеть разные результаты тестов, например, прохождение тестов с одним инструментом и сбой с другим.
Рисунок 4. Дискретные тестовые исполнители в старых версиях Android Studio.
Если в вашем проекте уже сохранены инструментированные тестовые конфигурации, они будут использовать Gradle для запуска тестов на подключенном устройстве. Вы можете создать новую инструментированную тестовую конфигурацию, используя действие «Поле» рядом с вашим тестовым классом или методом, как показано ниже.
Рисунок 5. Проведение испытаний с использованием водосточного желоба.
При запуске инструментированных тестов вы можете убедиться, что Android Studio использует средство запуска тестов Gradle, проверив выходные данные теста в тестовой матрице для выходных данных задачи Gradle.
Работать на нескольких устройствах параллельно
Инструментированные тесты по умолчанию запускаются на одном физическом устройстве или эмуляторе. Если вы хотите проверить, как ваши тесты ведут себя на большем количестве устройств, вы можете выбрать больше устройств, выполнив следующие действия:
Перед запуском тестов откройте раскрывающееся меню целевого устройства и выберите Выбрать несколько устройств… .
Рисунок 6. Выберите раскрывающееся меню «Несколько устройств».
Выберите нужные устройства и нажмите ОК .
Убедитесь, что текст в раскрывающемся меню цели изменен на «Несколько устройств» , и нажмите « Выполнить».
.
Окно инструмента «Тестовая матрица» отображает результаты тестирования для каждой выбранной конфигурации устройства.
Рисунок 7. Результаты теста в окне инструмента «Тестовая матрица».
Вы можете нажать на конкретный тест, чтобы просмотреть результаты в области вывода. Вы также можете сортировать тесты, нажимая на различные столбцы.
Запустить с помощью Firebase Test Lab
С помощью Firebase Test Lab вы можете одновременно тестировать свое приложение на множестве популярных устройств Android и в различных конфигурациях (различные комбинации локали, ориентации, размера экрана и версии платформы). Эти тесты проводятся на физических и виртуальных устройствах в удалённых центрах обработки данных Google. Результаты тестов включают журналы тестирования и подробную информацию о любых сбоях приложения.
Чтобы начать использовать Firebase Test Lab, вам необходимо сделать следующее:
- Создайте учетную запись Google , если у вас ее еще нет.
- В консоли Firebase нажмите «Создать новый проект» .
Android Studio предоставляет интегрированные инструменты, позволяющие настроить способ развертывания тестов в Firebase Test Lab. После создания проекта Firebase вы можете создать тестовую конфигурацию и запустить тесты:
- В главном меню выберите Выполнить > Изменить конфигурации .
- Нажмите «Добавить новую конфигурацию».
и выберите Android Instrumented Tests .
- Введите или выберите сведения о вашем тесте, такие как название теста, тип модуля, тип теста и класс теста.
- В раскрывающемся меню «Цель» в разделе «Параметры цели развертывания» выберите «Матрица устройств Firebase Test Lab» .
- Если вы не вошли в систему, нажмите «Войти через Google» и разрешите Android Studio доступ к вашей учетной записи.
- Рядом с Cloud Project выберите свой проект Firebase из списка.
- Рядом с конфигурацией матрицы выберите одну из конфигураций по умолчанию из раскрывающегося списка или создайте свою собственную, нажав «Открыть диалог».
Вы можете выбрать одно или несколько устройств, версий Android, локалей и ориентаций экрана, на которых хотите протестировать свое приложение. Firebase Test Lab проверит ваше приложение на всех выбранных вами сочетаниях при генерации результатов теста.
- Нажмите кнопку «ОК» в диалоговом окне «Конфигурации запуска/отладки», чтобы выйти.
- Запустите тесты, нажав кнопку «Выполнить».
.
Рисунок 8. Создание тестовой конфигурации для Firebase Test Lab.
Анализ результатов теста
Когда Firebase Test Lab завершит выполнение тестов, откроется окно «Выполнить» с результатами, как показано на рисунке 9. Возможно, вам потребуется нажать «Показать пройденные». чтобы увидеть все выполненные вами тесты.
Рисунок 9. Результаты инструментальных тестов с использованием Firebase Test Lab.
Вы также можете проанализировать свои тесты в Интернете, перейдя по ссылке, отображаемой в начале журнала выполнения теста в окне «Выполнить» .
Посмотреть тестовое покрытие
Инструмент покрытия тестами доступен для локальных модульных тестов, позволяя отслеживать процент и области кода вашего приложения, охваченные модульными тестами. Используйте инструмент покрытия тестами, чтобы определить, насколько адекватно протестированы элементы, классы, методы и строки кода, составляющие ваше приложение.
Чтобы запустить тесты с покрытием, выполните те же действия, которые описаны в разделе Запуск тестов , только вместо нажатия кнопки Запустить , нажмите Выполнить тест-имя с покрытием
В окне «Проект» этот параметр может быть скрыт за кнопкой «Дополнительно» (Remote Run/Debug) . Вы также можете настроить параметры покрытия в диалоговом окне « Конфигурации запуска/отладки» на вкладке «Покрытие кода» .
Рисунок 10. Процент покрытия кода для приложения.
Посмотреть результаты теста
При запуске одного или нескольких тестов в Android Studio результаты отображаются в окне «Выполнить» . На рисунке 11 показан успешный запуск теста.
Рисунок 11. Результаты теста появляются в окне «Выполнить».
В окне «Выполнить» тесты отображаются в древовидной структуре слева, а результаты и сообщения для текущего набора тестов — в области вывода справа. Используйте панели инструментов, контекстные меню и значки состояния для управления результатами тестов следующим образом:
- Используйте панель инструментов «Выполнить» , чтобы повторно запустить текущий тест, остановить текущий тест, повторно запустить неудавшиеся тесты (не показано, так как доступно только для модульных тестов), приостановить вывод и сделать дамп потоков.
- Используйте панель инструментов тестирования для фильтрации и сортировки результатов. Вы также можете разворачивать или сворачивать узлы, отображать покрытие тестами, а также импортировать и экспортировать результаты тестов.
- Щелкните контекстное меню , чтобы отслеживать запущенный тест, отображать встроенную статистику, прокручивать до трассировки стека, открывать исходный код при возникновении исключения, автоматически прокручивать до источника и выбирать первый проваленный тест после завершения тестового прогона.
- Значки статуса теста указывают на наличие ошибки в тесте, его игнорирование, провал, выполнение, прохождение, приостановку, прекращение или невыполнение теста.
- Щелкните правой кнопкой мыши строку в древовидной структуре, чтобы отобразить контекстное меню, позволяющее запускать тесты в режиме отладки, открывать файл исходного кода теста или переходить к строке в тестируемом исходном коде.
Анализировать неудачные тесты
Если один или несколько тестов не пройдены, в окне результатов отображается предупреждающий знак и количество неудачных тестов (например, «Тесты не пройдены: 1»):
Рисунок 12. Подробная информация о неудачном тесте на панели вывода.
При щелчке по неудавшемуся тесту в древовидной структуре слева справа отображается информация об этом тесте. Ожидаемое значение отображается рядом с фактическим, что позволяет сравнить их. Ссылка «Нажмите, чтобы увидеть разницу» открывает окно просмотра различий, где результаты отображаются рядом.
Узнать больше
На этой странице описаны основные шаги, которые необходимо выполнить при создании и запуске вашего первого теста в Android Studio. Вы также можете запустить тесты из командной строки . Вы также можете ознакомиться с документацией IntelliJ по тестированию . Подробнее о настройке тестов при создании более крупного набора тестов см. в разделе «Расширенная настройка тестов» .