Тестирование в Android Studio

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, для которых вы не можете создавать двойники тестов. Дополнительные сведения о написании инструментированных тестов см. в разделах Создание инструментальных тестов и Автоматизация тестов пользовательского интерфейса .

Вы можете разместить свои тесты в каталогах конкретных вариантов сборки, чтобы тестировать только определенные варианты сборки. Например, вы можете разместить несколько локальных модульных тестов в $module-name /src/ testMyFlavor /java/ чтобы тесты были нацелены на ваше приложение, созданное с использованием исходного кода этого варианта. Дополнительные сведения о создании таких специализированных тестов см. в разделе Создание инструментированного теста для варианта сборки .

Когда вы создаете новый проект или добавляете модуль приложения, Android Studio создает перечисленные ранее наборы исходных текстов тестов и включает в каждый пример тестового файла. Вы можете увидеть их в окне «Проект» , как показано на рисунке 2.

Рис. 2. Инструментальные тесты вашего проекта (1) и (2) локальные тесты JVM видны либо в представлении «Проект» (слева), либо в представлении Android (справа).

Создание новых тестов

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

  1. Откройте исходный файл, содержащий код, который вы хотите протестировать.
  2. Поместите курсор на имя класса или метода, который вы хотите протестировать, и нажмите Control+Shift+T ( Command+Shift+T в macOS).
  3. В появившемся всплывающем окне нажмите «Создать новый тест…».
  4. В диалоговом окне «Создать тест» выберите JUnit4 , отредактируйте поля и методы, которые вы хотите сгенерировать, а затем нажмите «ОК» .
  5. В диалоговом окне «Выбор каталога назначения» щелкните исходный набор, соответствующий типу теста, который вы хотите создать: androidTest для инструментированного теста или тест для локального модульного теста. Затем нажмите ОК .

Альтернативно вы можете создать общий тестовый файл в соответствующем наборе исходных текстов следующим образом:

  1. В окне проекта слева щелкните раскрывающееся меню и выберите представление Android .
  2. Щелкните правой кнопкой мыши каталог Java и выберите «Создать» > «Класс Java» или «Создать» > «Класс/файл Kotlin» . Альтернативно вы можете выбрать каталог Java и использовать сочетание клавиш Control+N ( Command+N в macOS).
  3. В диалоговом окне «Выбор каталога назначения» щелкните исходный набор, соответствующий типу теста, который вы хотите создать: androidTest для инструментированного теста или тест для локального модульного теста. Затем нажмите ОК .
  4. Назовите файл и нажмите «ОК» .

Если ваше приложение не компилируется после добавления теста, убедитесь, что у вас настроены правильные зависимости тестовой библиотеки. Правильные зависимости см. в разделах «Создание локальных тестов» и «Создание инструментированных тестов» .

Запуск тестов

Прежде чем запускать какие-либо тесты, убедитесь, что ваш проект полностью синхронизирован с Gradle, нажав «Синхронизировать проект». на панели инструментов. Вы можете запускать тесты с разным уровнем детализации:

  • Чтобы запустить все тесты в каталоге или файле , откройте окно «Проект» и выполните одно из следующих действий:

    • Щелкните правой кнопкой мыши каталог или файл и выберите «Выполнить». .
    • Выберите каталог или файл и используйте сочетание клавиш Control+Shift+R .
  • Чтобы запустить все тесты в классе или определенном методе , откройте тестовый файл в редакторе кода и выполните одно из следующих действий:

    • Нажмите значок «Выполнить тест». в канаве .
    • Щелкните правой кнопкой мыши тестовый класс или метод и выберите «Выполнить». .
    • Выберите тестовый класс или метод и используйте сочетание клавиш Control+Shift+R .

Инструментированные тесты будут выполняться на физическом устройстве или в эмуляторе. Дополнительные сведения о настройке физических устройств см. в разделе Запуск приложений на аппаратном устройстве . Дополнительные сведения о настройке эмуляторов см. в разделе Запуск приложений на эмуляторе Android .

Настройте тестовый запуск

По умолчанию ваши тесты запускаются с использованием конфигурации запуска Android Studio по умолчанию. Если вам необходимо изменить некоторые параметры запуска, такие как средство запуска инструментов и параметры развертывания, вы можете изменить конфигурацию запуска в диалоговом окне « Конфигурации запуска/отладки» (нажмите «Выполнить» > «Редактировать конфигурации» ).

Унифицированный запуск тестов Gradle

Плагин Android Gradle 7.1.0 и Android Studio Bumblebee и более поздних версий используют собственную реализацию Gradle инструментального средства запуска тестов Android для запуска инструментированных тестов. При использовании одного и того же средства запуска тестов результаты, скорее всего, будут одинаковыми независимо от того, запускаете ли вы AGP из командной строки, например, на сервере непрерывной интеграции, или из Android Studio.

Рисунок 3. Средство запуска тестов Unified Gradle.

В предыдущих версиях Android Studio вместо инструментального средства запуска тестов Gradle для Android использовалась инструментальная программа IntelliJ Android. Поэтому, если вы не используете последнюю версию Android Studio, в зависимости от того, запускаете ли вы тесты из Android Studio или из командной строки с помощью плагина Gradle, вы можете увидеть разные результаты тестов, например тесты, пройденные с использованием одного бегуна и не пройденные. на другом.

Рисунок 4. Дискретные средства запуска тестов в старых версиях Android Studio.

Если в вашем проекте уже сохранены конфигурации инструментальных тестов, они будут использовать Gradle для запуска тестов на вашем подключенном устройстве. Вы можете создать новую конфигурацию инструментированного теста, используя действие поля рядом с вашим тестовым классом или методом, как показано ниже.

Рисунок 5. Запуск тестов из действия желоба.

При выполнении инструментированных тестов вы можете убедиться, что Android Studio использует средство запуска тестов Gradle, проверив выходные данные теста в матрице тестирования для выходных данных задачи Gradle.

Параллельная работа на нескольких устройствах

Инструментированные тесты по умолчанию запускаются на одном физическом устройстве или эмуляторе. Если вы хотите увидеть, как ваши тесты ведут себя на большем наборе устройств, вы можете выбрать больше устройств, выполнив следующие действия:

  1. Прежде чем запускать тесты, откройте раскрывающееся меню целевого устройства и выберите «Выбрать несколько устройств…» .

    Рисунок 6. Раскрывающееся меню «Выбор нескольких устройств».

  2. Выберите нужные устройства и нажмите «ОК» .

  3. Убедитесь, что текст в раскрывающемся меню цели изменен на «Несколько устройств» , и нажмите «Выполнить». .

  4. В окне инструмента «Тестовая матрица» отображаются результаты тестирования для каждой выбранной конфигурации устройства.

    Рис. 7. Результаты тестирования в окне инструмента «Матрица тестов».

  5. Вы можете нажать на конкретный тест, чтобы проверить результат на панели вывода. Вы также можете сортировать тесты, щелкая различные столбцы.

Запуск с помощью Firebase Test Lab

Используя Firebase Test Lab , вы можете одновременно тестировать свое приложение на многих популярных устройствах Android и их конфигурациях (различные комбинации языкового стандарта, ориентации, размера экрана и версии платформы). Эти тесты проводятся на физических и виртуальных устройствах в удаленных центрах обработки данных Google. Результаты тестирования предоставляют журналы тестирования и включают подробную информацию о любых сбоях приложения.

Чтобы начать использовать Firebase Test Lab, вам необходимо сделать следующее:

  1. Создайте учетную запись Google , если у вас ее еще нет.
  2. В консоли Firebase нажмите «Создать новый проект» .

Android Studio предоставляет интегрированные инструменты, которые позволяют вам настроить способ развертывания тестов в Firebase Test Lab. После создания проекта Firebase вы можете создать тестовую конфигурацию и запустить тесты:

  1. Нажмите «Выполнить» > «Редактировать конфигурации» в главном меню.
  2. Нажмите «Добавить новую конфигурацию». и выберите «Инструментальные тесты Android» .
  3. Введите или выберите сведения о тесте, такие как имя теста, тип модуля, тип теста и класс теста.
  4. В раскрывающемся меню «Цель» в разделе «Параметры цели развертывания » выберите «Матрица устройств Firebase Test Lab» .
  5. Если вы не вошли в систему, нажмите «Войти через Google» и разрешите Android Studio доступ к вашей учетной записи.
  6. Рядом с Cloud Project выберите из списка свой проект Firebase.
  7. Рядом с пунктом «Конфигурация матрицы» выберите одну из конфигураций по умолчанию из раскрывающегося списка или создайте свою собственную, нажав «Открыть диалог». . Вы можете выбрать одно или несколько устройств, версии Android, локали и ориентации экрана, на которых вы хотите протестировать свое приложение. Лаборатория тестирования Firebase проверит ваше приложение на соответствие каждой комбинации выбранных вами вариантов при формировании результатов тестирования.
  8. Нажмите «ОК» в диалоговом окне «Конфигурации запуска/отладки», чтобы выйти.
  9. Запустите тесты, нажав «Выполнить». .

Рисунок 8. Создание тестовой конфигурации для Firebase Test Lab.

Анализируйте результаты испытаний

Когда Firebase Test Lab завершит выполнение ваших тестов, откроется окно «Выполнить» с результатами, как показано на рис. 9. Возможно, вам придется нажать «Показать пройденные». чтобы увидеть все выполненные вами тесты.

Рисунок 9. Результаты инструментальных тестов с использованием Firebase Test Lab.

Вы также можете проанализировать свои тесты в Интернете, перейдя по ссылке, отображаемой в начале журнала выполнения теста в окне «Выполнить» .

Посмотреть покрытие тестирования

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

Чтобы запустить тесты с покрытием, выполните те же действия, что описаны в разделе «Выполнение тестов» , только вместо нажатия кнопки «Выполнить». , нажмите «Выполнить имя теста с покрытием» . В окне проекта этот параметр может быть скрыт за More Run/Debug . Вы также можете настроить параметры покрытия в диалоговом окне «Конфигурации запуска/отладки» на вкладке «Покрытие кода» .

Рисунок 10. Процент покрытия кода приложения.

Посмотреть результаты теста

Когда вы запускаете один или несколько тестов из Android Studio, результаты появляются в окне «Выполнить» . На рис. 11 показан успешный тестовый запуск.

Рис. 11. Результаты теста отображаются в окне «Выполнить».

В окне «Выполнить» тесты отображаются в виде дерева слева, а результаты и сообщения для текущего набора тестов — на панели вывода справа. Используйте панели инструментов, контекстные меню и значки состояния для управления результатами теста следующим образом:

  1. Используйте панель инструментов «Выполнить», чтобы перезапустить текущий тест, остановить текущий тест, повторно запустить неудачные тесты (не отображается, поскольку она доступна только для модульных тестов), приостановить вывод и создать дамп потоков.
  2. Используйте панель инструментов тестирования для фильтрации и сортировки результатов тестирования. Вы также можете разворачивать или сворачивать узлы, показывать тестовое покрытие, а также импортировать или экспортировать результаты тестов.
  3. Щелкните контекстное меню , чтобы отслеживать выполняемый тест, отображать встроенную статистику, переходить к трассировке стека, открывать исходный код при исключении, автоматически прокручивать источник и выбирать первый неудачный тест после завершения выполнения теста.
  4. Значки состояния теста показывают, есть ли в тесте ошибка, он был проигнорирован, не пройден, находится в процессе, пройден, приостановлен, завершен или не запускался.
  5. Щелкните правой кнопкой мыши строку в древовидном представлении, чтобы отобразить контекстное меню, позволяющее запустить тесты в режиме отладки, открыть файл исходного кода теста или перейти к строке тестируемого исходного кода.

Анализируйте неудачные тесты

Если один или несколько тестов завершаются неудачно, в окне результатов отображается предупреждающий знак и количество ошибок (например, «Тесты не пройдены: 1»):

Рисунок 12. Подробности о неудачном тесте на панели вывода.

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

Узнать больше

На этой странице описаны основные шаги, которые необходимо выполнить при создании и запуске первого теста с помощью Android Studio. Вы также можете запускать тесты из командной строки . Вы также можете ознакомиться с документацией IntelliJ по тестированию . Дополнительные сведения о настройке тестов при создании более крупного набора тестов см. в разделе Расширенная настройка тестов .