The new API allows you to configure Kover in a more flexible manner, while being more concise than the previous API. From now on, there is no need to configure each Kover task separately.
In the new API, in order to respect upcoming Gradle conventions, the plugin should be explicitly applied to
each project that needs coverage.
To create merged tasks (that collect test coverage from different projects), enable it by koverMerged.enable()
or
koverMerged {
enable()
}
in one project, which will be a merged report container.
To configure reports that collect coverage only for tests from one project, the kover { }
project extension is used.
To configure merged reports, the koverMerged { }
project extension is used.
for Kotlin script: change isDisabled = true
to isDisabled.set(true)
Use property engine
- it combines version and coverage engine vendor.
To use IntelliJ Coverage Engine with default version write engine.set(kotlinx.kover.api.DefaultIntellijEngine)
(Kotlin) or engine = kotlinx.kover.api.DefaultIntellijEngine.INSTANCE
(Groovy).
To use IntelliJ Coverage Engine with custom version write engine.set(kotlinx.kover.api.IntellijEngine("version"))
(Kotlin) or engine = kotlinx.kover.api.IntellijEngine("version")
(Groovy).
To use JaCoCo Coverage Engine with default version write engine.set(kotlinx.kover.api.DefaultJacocoEngine)
(Kotlin) or engine = kotlinx.kover.api.DefaultJacocoEngine.INSTANCE
(Groovy).
To use JaCoCo Coverage Engine with custom version write engine.set(kotlinx.kover.api.JacocoEngine("version"))
(Kotlin) or engine = kotlinx.kover.api.JacocoEngine("version")
(Groovy).
Use the properties individually for each report
kover {
xmlReport {
onCheck.set(true)
}
htmlReport {
onCheck.set(true)
}
verify {
onCheck.set(true)
}
}
Use inclusion list in project filters
koverMerged {
enable()
filters {
projects {
includes.add(":path or unique project name")
}
}
}
If includes
are empty, all subprojects and current project are used in merged reports.
There is no replacement. At the moment, all classes from the packages "android." and "com.android.*" excluded from instrumentation.
TBD
Solution for Kotlin script: change isDisabled = true
to isDisabled.set(true)
Solution: change binaryReportFile
to reportFile
Solution for Kotlin: change includes = listOf("com.example.*", "foo.bar.*")
to includes.addAll("com.example.*", "foo.bar.*")
Solution for Groovy: change includes = ["com.example.*", "foo.bar.*"]
to includes.addAll("com.example.*", "foo.bar.*")
Solution for Kotlin: change excludes = listOf("com.example.*", "foo.bar.*")
to includes.addAll("com.example.*", "foo.bar.*")
Solution for Groovy: change excludes = ["com.example.*", "foo.bar.*"]
to includes.addAll("com.example.*", "foo.bar.*")
Solution: use property in Kover extension at the root of the project
kover {
xmlReport {
reportFile.set(yourFile)
}
}
* for xmlReportFile
task use koverMerged { ... }
extension of the project.
Solution for Kotlin: use filter in Kover extension at the root of the project
kover {
filters {
classes {
includes += listOf("foo.bar.*", "foo.biz.*")
}
}
}
Solution for Groovy: use filter in Kover extension at the root of the project
kover {
filters {
classes {
includes.addAll("foo.bar.*", "foo.biz.*")
}
}
}
* for xmlReportFile
task use koverMerged { ... }
extension of the project.
Solution for Kotlin: use filter in Kover extension at the root of the project
kover {
filters {
classes {
excludes += listOf("foo.bar.*", "foo.biz.*")
}
}
}
Solution for Groovy: use filter in Kover extension at the root of the project
kover {
filters {
classes {
excludes.addAll("foo.bar.*", "foo.biz.*")
}
}
}
* for xmlReportFile
task use koverMerged { ... }
extension of the project.
Solution: use property in Kover extension at the root of the project
kover {
htmlReport {
reportDir.set(yourDir)
}
}
* for koverMergedHtmlReport
task use koverMerged { ... }
extension of the project.
Solution for Kotlin: use filter in Kover extension at the root of the project
kover {
filters {
classes {
includes += listOf("foo.bar.*", "foo.biz.*")
}
}
}
Solution for Groovy: use filter in Kover extension at the root of the project
kover {
filters {
classes {
includes.addAll("foo.bar.*", "foo.biz.*")
}
}
}
* for koverMergedHtmlReport
task use koverMerged { ... }
extension of the project.
Solution for Kotlin: use filter in Kover extension at the root of the project
kover {
filters {
classes {
excludes += listOf("foo.bar.*", "foo.biz.*")
}
}
}
Solution for Groovy: use filter in Kover extension at the root of the project
kover {
filters {
classes {
excludes.addAll("foo.bar.*", "foo.biz.*")
}
}
}
* for koverMergedHtmlReport
task use koverMerged { ... }
extension of the project.
Solution: use function in Kover extension at the root of the project
kover {
verify {
rule {
// your verification rule
}
}
}
- For
koverMergedVerify
task usekoverMerged { ... }
extension of the project.
Solution for Kotlin: use filter in Kover extension at the root of the project
kover {
filters {
classes {
includes += listOf("foo.bar.*", "foo.biz.*")
}
}
}
Solution for Groovy: use filter in Kover extension at the root of the project
kover {
filters {
classes {
includes.addAll("foo.bar.*", "foo.biz.*")
}
}
}
* for koverMergedVerify
task use koverMerged { ... }
extension of the project.
Solution for Kotlin: use filter in Kover extension at the root of the project
kover {
filters {
classes {
excludes += listOf("foo.bar.*", "foo.biz.*")
}
}
}
Solution for Groovy: use filter in Kover extension at the root of the project
kover {
filters {
classes {
excludes.addAll("foo.bar.*", "foo.biz.*")
}
}
}
- For
koverMergedVerify
task usekoverMerged { ... }
extension of the project.