Плагин Android Gradle может создавать отчеты о покрытии кода, в которых отслеживается процент кода, покрываемый тестами. На этой странице рассказывается, как включить отчеты о покрытии и создавать их.
Вы можете создавать отчеты о покрытии для каждого типа тестов (модульных и инструментальных) и каждого варианта. Вы также можете создавать унифицированные отчеты о покрытии для разных типов тестов, модулей и вариантов сборки.
Включить покрытие кода
Чтобы включить покрытие кода, задайте для enableAndroidTestCoverage и enableUnitTestCoverage значение true в файлах сборки на уровне модуля для каждого варианта, для которого вы хотите получать отчеты о покрытии:
Kotlin
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage = true // Enable coverage for instrumentation tests enableAndroidTestCoverage = true } } }
Яркий
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage true // Enable coverage for instrumentation tests enableAndroidTestCoverage true } } }
Измените версию Jacoco (необязательно)
AGP автоматически применяет Jacoco, когда вы включаете покрытие в своих модулях. Однако если вам нужно использовать определенную версию Jacoco, вы можете указать ее в файле сборки на уровне модуля:
Kotlin
android { testCoverage { jacocoVersion = "JACOCO_VERSION" } }
Яркий
android { testCoverage { jacocoVersion = 'JACOCO_VERSION' } }
Создание отчетов о покрытии для отдельных вариантов
Чтобы создать отчеты о покрытии только для модульного тестирования или только для инструментальных тестов определенного варианта, запустите соответствующие задачи.
| Тип теста | Команда | Местоположение ошибки |
|---|---|---|
| Модульные тесты | ./gradlew :module-name:createVariantNameUnitTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/test/variant/index.html |
| Инструментальные тесты | ./gradlew :module-name:createVariantNameAndroidTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html |
Создание унифицированных отчетов о покрытии кода
Вы можете создавать унифицированные отчеты о покрытии кода с помощью задач Gradle testAllSuites и testAllSuitesWithDependencies. Эти задачи создадут один отчет в формате HTML, в котором будут объединены данные о покрытии из разных типов тестов (модульных и инструментальных), модулей и вариантов сборки. Это позволяет получить полное представление о покрытии кода проекта на одной панели управления.
Требования
- Плагин Android Gradle 9.5.0-alpha05 или более поздней версии.
- Как включить покрытие кода
Чтобы создать единый отчет, выполните в командной строке одну из следующих задач:
| Область действия | Команда | Описание | Местоположение ошибки |
|---|---|---|---|
| Текущий модуль | ./gradlew :module-name:testAllSuites --continue |
Выполняет все наборы тестов и создает единый отчет о покрытии для текущего модуля, объединяя данные всех типов тестов. | path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/ |
| Текущий модуль и зависимости | ./gradlew :module-name:testAllSuitesWithDependencies --continue |
Тестирует все наборы тестов и генерирует единый отчет о покрытии для текущего модуля и всех его зависимостей. Эта задача доступна для модулей приложений и модулей библиотек с включенной публикацией. | path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/ |
На целевой странице сгенерированного отчета в формате HTML показана сводка по всем модулям. Вы можете перейти от модуля к пакету, от пакета к классу и от класса к исходному файлу. Нажмите на любой файл, чтобы посмотреть код с выделением строк и ветвей:
- Зеленый – линии, которые покрыты.
- Красный – строки, не охваченные тестами.
- Желтый – частичное покрытие (некоторые инструкции или ветви пропущены).
Как использовать покрытие кода на устройстве для инструментальных тестов
По умолчанию AGP измеряет покрытие инструментальных тестов, инструментируя классы вашего приложения с помощью JaCoCo при его сборке. Начиная с AGP 9.6.0-alpha01, вы можете использовать вместо этого инструментирование на устройстве, которое инструментирует классы вашего приложения на тестовом устройстве во время выполнения тестов. Подробнее о том, как посмотреть отчеты о покрытии кода (с агентом на устройстве)…