Как посмотреть отчеты о покрытии кода

Плагин 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, в котором будут объединены данные о покрытии из разных типов тестов (модульных и инструментальных), модулей и вариантов сборки. Это позволяет получить полное представление о покрытии кода проекта на одной панели управления.

Требования

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

Область действия Команда Описание Местоположение ошибки
Текущий модуль ./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, вы можете использовать вместо этого инструментирование на устройстве, которое инструментирует классы вашего приложения на тестовом устройстве во время выполнения тестов. Подробнее о том, как посмотреть отчеты о покрытии кода (с агентом на устройстве)…