Kotlin / kotlinx-kover

Apache License 2.0
1.25k stars 46 forks source link

Kover

Kotlin Beta GitHub license

Kover is a set of solutions for collecting test coverage of Kotlin code compiled for JVM and Android platforms.

Kover Toolset:

Kover Gradle Plugin

For full information about latest stable release of Kover Gradle Plugin, please refer to the documentation.

Features

The recommended way of applying Kover is with the plugins DSL.

Minimum supported version of Gradle is 6.8.

Add the following to your top-level build file:

Kotlin ```kotlin plugins { id("org.jetbrains.kotlinx.kover") version "0.8.0" } ```
Groovy ```groovy plugins { id 'org.jetbrains.kotlinx.kover' version '0.8.0' } ```

After you applied Kover Gradle plugin, Kover tasks will be created for generating reports and verification. E.g. to generate HTML report run ./gradlew koverHtmlReport - this will automatically start code compilation, execution of instrumented tests, and an HTML report will be generated with measurement results in the build folder.

It is also important that after applying Kover Gradle plugin, during the running tests, the classes are modified (instrumented) when loaded into the JVM which may lead to some performance degradation, or affect concurrent tests.

Legacy Plugin Application

Legacy method of applying plugins can be used if you cannot use the plugins DSL for some reason.

Kotlin ```kotlin buildscript { repositories { mavenCentral() } dependencies { classpath("org.jetbrains.kotlinx:kover-gradle-plugin:0.8.0") } } apply(plugin = "org.jetbrains.kotlinx.kover") ```
Groovy ```groovy buildscript { repositories { mavenCentral() } dependencies { classpath 'org.jetbrains.kotlinx:kover-gradle-plugin:0.8.0' } } apply plugin: 'org.jetbrains.kotlinx.kover' ```

To create report combining coverage info from different Gradle projects

You have to add dependency on the project, in which the report task will be run

dependencies {
  kover(project(":another:project"))
}

in this case report will be generated for current project joined with :another:project project.

More examples of Gradle plugin applying can be found in example folder

Kover CLI

Standalone JVM application used for offline instrumentation and generation of human-readable reports.

Documentation of the Kover CLI.

Kover offline instrumentation

Offline instrumentation is the modification of class-files stored on disk to measure their coverage.

The ways of offline instrumentation and running of the instrumented applications are described in the documentation.

Kover JVM agent

JVM agent is a jar file that modifies the bytecode of loaded into the JVM classes in order to measure coverage. Documentations.

Kover features artifact

A JVM dependency that allows to programmatically instrument class-files on a disk.

Documentation of Kover features artifact

Building locally and Contributing

See Contributing Guidelines.