2017-04-03 5 views
3

Ich brauche die Mindestdeckung mit der neuen jacoco Aufgabe in der gradle Release 3.4.1Wie kann ich die Mindestabdeckung mit einigen ausgeschlossenen Klassen und mit dem jacoco-Plugin überprüfen?

jacocoTestCoverageVerification

Diese Aufgabe zur Verfügung steht, mit zu überprüfen und mit dem jacoco plugin> = 0.6.3

Ich könnte eine andere Aufgabe ausführen, die einen HTML-Bericht mit der Zweigabdeckung erzeugt, aber jetzt möchte ich diese Nummer verwenden, um den Build fehlzuschlagen.

Dies ist mein Code

buildscript { 
    ext { 
     .... 
    } 
    repositories { 
     mavenCentral() 
     maven { 
      .... 
     } 
    } 
    dependencies { 
     ..... 
    } 
} 


apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 
apply plugin: 'jacoco' 

jar { 
    baseName = "coverage-test" 
} 


dependencies { 
    // my dependencies 
} 


eclipse { 
    classpath { 
     containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER') 
     containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8' 
    } 
} 

wrapper { 
    gradleVersion = '3.4.1' 
} 

jacoco { 
    toolVersion = '0.7.9' 
} 

jacocoTestReport { 
    reports { 
     xml.enabled false 
     csv.enabled false 
    }  
    group = "Reporting" 
    description = "Generate Jacoco coverage reports after running tests." 
    additionalSourceDirs = files(sourceSets.main.allJava.srcDirs) 

    afterEvaluate { 
     classDirectories = files(classDirectories.files.collect { 
      fileTree(
       dir: it, 
       excludes: 
       [ 
         'com/jacoco/dto/**', 
         'com/jacoco/configs/**', 
         //and others 
       ]) 
     }) 
    } 
} 

jacocoTestCoverageVerification { 

    //I tried this and it didn't work 

    // classDirectories = files(classDirectories.files.collect { 
    // fileTree(
    // dir: it, 
     // excludes: 
     // [ 
     //  'com/jacoco/dto/**', 
     //  'com/jacoco/configs/**', 
     //  //and others 
     // ]) 
    // }) 

    violationRules { 
     rule { 
      //Also tried this and it didn't work 

      // excludes = ['com/jacoco/dto/**', ...] 

      limit { 
       counter = 'BRANCH' 
       minimum = 0.8 
      } 
     } 
    } 
} 
check.dependsOn jacocoTestCoverageVerification 

Mit classDirectories ich die Fehler folgende Kann nicht Eigentum 'Dateien' auf Null-Objekt bekommen. Und mit der zweiten Option (nur schließt aus), läuft der Build reibungslos, aber es schließt keine Klasse aus.

Antwort

2

Sie messen eine andere Sache, die Sie ausschließen. Der Standard-JaCoCo-Bereich ist "BUNDLE", was meiner Meinung nach den gesamten Code bedeutet. Ich habe das nie benutzt. Ich vermesse immer nur "CLASS" Scope. Und es sieht so aus, als ob Sie versuchen, dasselbe zu tun.

Die Ausschlüsse beziehen sich auf die Elemente im Gültigkeitsbereich. Nicht sicher, was es für "BUNDLE" bedeutet, aber ich bin fast geneigt zu denken, dass es entweder alles oder nichts ist. Auch die Verwendung von anderen Arten von Platzhaltern ist ausgeschlossen. Versuchen Sie, Ihre Konfiguration zu ändern, um das Element "CLASS" (oder "PACKAGE") zu verwenden.

violationRules { 
    rule { 
     element = 'CLASS' 
     excludes = ['com.jacoco.dto.*'] 
     limit { 
      counter = 'BRANCH' 
      minimum = 0.8 
     } 
    } 
} 

check.dependsOn jacocoTestCoverageVerification 
+0

BTW hier ist ein Kern von dem, was ich in meinem Projekt versucht (und es funktionierte): https://gist.github.com/sm4/1cacc5d8b6d99cac84336ab4df06d1bd und das ist das Projekt: https://github.com/ sm4/promo-codes – sm4

+0

Ja, Sie hatten Recht, ich habe versucht, zwei verschiedene Dinge zu messen. Auch versuche ich mit deiner Konfiguration eine Check-Regel hinzuzufügen und es funktioniert. Vielen Dank!! –

Verwandte Themen