Вот структура:
Код: Выделить всё
repository-root/
└── application/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ └── java/
│ │ └── test/
│ └── build.gradle.kts
├── common/
│ ├── src/
│ │ └── main/
│ │ └── java/
│ └── build.gradle.kts
└── build.gradle.kts
Основная проблема: несмотря на наличие тестов, охватывающих код библиотечного модуля, отчеты Jacoco отражают покрытие только модуля приложения.
Цель: получить отчет о покрытии, который точно включает данные из всех модулей, отражая истинное покрытие, достигнутое с помощью тестов, выполняемых в модуле приложения.
Я попытался включить покрытие для одного из модулей библиотеки (:common), настроив jacocoTestReport Задача в app/build.gradle.kts в build.gradle модуля приложения следующим образом:
Код: Выделить всё
tasks.jacocoTestReport {
val common = project(":common")
dependsOn(tasks.test)
dependsOn(common.tasks.test)
classDirectories.setFrom(
files("$buildDir/classes/java/main"),
files("${common.buildDir}/classes/java/main"))
sourceDirectories.setFrom(
files("${projectDir}src/main/java"),
files("${common.projectDir}/src/main/java"))
executionData.setFrom(
files("$buildDir/jacoco/test.exec"),
files("${common.buildDir}/jacoco/test.exec"))
reports {
xml.required.set(true)
csv.required.set(false)
html.required.set(true)
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... submodules