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

Плагин 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 приводится сводка по всем модулям. Вы можете перейти от модуля к пакету, от пакета к классу, а от класса – к исходному файлу. Нажмите на любой файл, чтобы посмотреть код с выделением строк и ветвей:

  • Зеленый – линии, которые покрыты.
  • Красный – строки, не охваченные тестами.
  • Желтый – частичное покрытие (некоторые инструкции или ветви пропущены).