Search code examples
gradlejacocogradle-plugingradle-kotlin-dsl

Configure Jacoco with gradle and kotlin DSL


I'm trying to configure Jacoco to exclude some classes from analysis but can't find any working example :(

I found some samples with afterEvaluate but no success


Solution

  • src/main/java/org/example/A.java:

    package org.example;
    
    class A {
    }
    

    src/main/java/org/example/B.java:

    package org.example;
    
    class B {
    }
    

    src/test/java/org/example/ExampleTest.java:

    package org.example;
    
    public class ExampleTest {
      @org.junit.Test
      public void test() {
        new A();
        new B();
      }
    }
    

    build.gradle.kts:

    plugins {
      java
      jacoco
    }
    
    repositories {
      mavenCentral()
    }
    
    dependencies {
      testCompile("junit:junit:4.12")
    }
    

    using Gradle 5.4.1 execution of gradle test jacocoTestReport produces following report

    report

    after addition to build.gradle.kts

    tasks.withType<JacocoReport> {
      classDirectories.setFrom(
        sourceSets.main.get().output.asFileTree.matching {
          exclude("org/example/B.class")
        }
      )
    }
    

    execution of the same command produces following report

    report after exclusion