12 Aralık 2021 Pazar

jacoco plugin

Giriş
Plugin için tüm ayarları başka bir dosyaya taşıyabiliriz. Şöyle yaparız
apply from: "${rootDir}/gradle/jacoco.gradle"
Bu dosyada şöyle yaparız
apply plugin: 'jacoco'

jacoco {
  toolVersion = '0.8.7'
}

jacocoTestReport {
  reports {
    xml.enabled false
    csv.enabled false
    html.enabled true
  }
}
Açıklaması şöyle. Yani IntelliJ ile bakınca verification altında jacocoTestReport diye yeni bir task görebiliriz.
If the Java plugin is also applied to your project, a new task named jacocoTestReport is created. By default, a HTML report is generated at $buildDir/reports/jacoco/test.
Bu task başka bir şey bağlı değildir. Açıklaması şöyle. Yani test task'ını başlatınca jacoco çalışmaz.
While tests should be executed before generation of the report, the jacocoTestReport task does not depend on the test task.
Jacoco'yu elle başlatmak için şöyle yaparız. Jacoco çıktısını "build/reports/tests/test/index.html" dizininde görebiliriz.
gradlew  clean test jacocoTestReport
Eğer test ile jacoco'yu bağlamak istersek şöyle yaparız
test {
    finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
    dependsOn test // tests are required to run before generating the report
}
Plugin Ayarları
1. plugins Block
Şöyle yaparız
plugins { 
  id 'jacoco' 
}
2. jacoco Block
Kullanılacak sürümü belirtmek için şöyle yaparız
jacoco { 
  toolVersion = "0.8.7" 
} 
3. test Block
Şöyle yaparız
test { 
  finalizedBy jacocoTestReport 
}
4. jacocoTestReport Block
Rapor sonuçlarını hangi formatta istediğimizi belirtiriz.
Örnek
Şöyle yaparız
jacoco {
  toolVersion = '0.8.7'
}

jacocoTestReport {
  reports {
    xml.enabled false
    csv.enabled false
    html.enabled true
  }
}
Örnek
Şöyle yaparız
jacocoTestReport {
  reports {
    xml.enabled true
  }
}
Örnek
Test task'ına bağlamak için şöyle yaparız
plugins {
  id "org.sonarqube" version "$sonarQubeVersion"
  id "jacoco"
}

jacoco {
  toolVersion = "0.8.6"
  reportsDir = file("$buildDir/jacocoreports")
}

jacocoTestReport {
  reports {
    xml.enabled true
  }
}

test.finalizedBy jacocoTestReport
Sonar ile birleştirmek için şöyle yaparız
sonarqube {
  properties {
    property 'sonar.coverage.exclusions', '**/dto/**,**/util/**,**/ResponseExceptionHandler.java,,**/Application.java'
     property 'sonar.coverage.jacoco.xmlReportPaths', "$buildDir/jacocoreports/test/jacocoTestReport.xml"
  }
}
Örnek
Şöyle yaparız
jacocoTestReport { 
  dependsOn test 
  reports { 
    xml.required = true 
    csv.required = true 
    html.required = true 
  } 
}
5. jacocoTestCoverageVerification  Block
Şöyle yaparız
jacocoTestCoverageVerification {
  violationRules {
    rule {
      limit {
        minimum = 0.8
      }
    }
    rule {
      limit {
        counter = 'BRANCH'
        value = 'COVEREDRATIO'
        minimum = 0.8
      }
    }
  }
}
Örnek
Kapsama yüzdesini check task'ına bağlamak için şöyle yaparız
check.dependsOn jacocoTestCoverageVerification
Örnek
Şöyle yaparız
plugins {
  id 'java'
  id 'jacoco'
}

dependencies {
  testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
  testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

test {
  useJUnitPlatform()
  finalizedBy jacocoTestReport
}

jacocoTestReport {
  dependsOn test
  reports {
    html.required = true
  }
}

jacocoTestCoverageVerification {
  violationRules {
    rule {
      limit {
      minimum = 0.8
    }
  }
  }
}

check.dependsOn jacocoTestCoverageVerification


Hiç yorum yok:

Yorum Gönder

Gradle Daemon Nedir?

Giriş Açıklaması  şöyle . Gradle Daemon arka planda çalışır. Çünkü Gradle'ı ayağa kaldırmak ve ilklendirmek çok uzun sürüyor.  Gradle ru...