2017-05-09 5 views
3

Ich versuche, einen Jacoco Testbericht in Gradle zu erzeugen. Wenn ich versuche, meinen Code zu synchronisieren, werde ich die folgende Fehlermeldung:Gradle Jacoco - Konnte Methode jacocoTestReport() nicht finden

Error:(56, 0) Could not find method jacocoTestReport() for arguments [[email protected]] on project ':app' of type org.gradle.api.Project.

Meine build.gradle Datei enthält die folgenden Elemente:

apply plugin: 'jacoco' 

jacoco { 
    toolVersion = "0.7.6.201602180812" 
    reportsDir = file("$buildDir/reports/jacoco") 
} 

jacocoTestReport { 
    group = "Reporting" 
    reports { 
     xml.enabled true 
     csv.enabled false 
     html.destination "${buildDir}/reports/coverage" 
    } 
} 

Als ich im documentation aussehen, weiß ich nicht sehe alles was ich falsch mache.

Gradle Version: 3.3

Warum erhalte ich diesen Fehler und wie kann ich es beheben?

Antwort

3

Grundsätzlich kenne ich zwei Möglichkeiten, dies zu erreichen.

Der erste Ansatz ist die eingebauten Android gradle Plugin-Funktion:

android { 
    ... 
    buildTypes { 
     debug { 
      testCoverageEnabled = true 
     } 
     ... 
    } 
    ... 
} 

Dieser wird gradle Aufgaben definieren, die ausgeführt werden können. Soweit ich weiß, funktioniert das gut mit Instrumentierungstests. Weitere Informationen: Code Coverage on Android

Der zweite Ansatz ist dieses Plugin zu verwenden:

https://github.com/vanniktech/gradle-android-junit-jacoco-plugin

Die Einrichtung ist einfach:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.6.0' 
    } 
} 

apply plugin: 'com.vanniktech.android.junit.jacoco' 

Und nach sync Projekt werden Sie Aufgaben wie jacocoTestReport<Flavor><BuildType>

Wir verwenden dies zu messen Die Codeabdeckung unserer Unit-Tests, die auf dem lokalen Computer ausgeführt werden.

+0

In Ordnung , erste Lösung hat für mich funktioniert. – Guido

1

Wie in documentation mentioned in your question erklärte:

If the Java plugin is also applied to your project, a new task named jacocoTestReport is created that depends on the test task.

was ziemlich logisch ist - für Java-Code erfordert seine Kompilation, Durchführung von Tests

So dass in der Tat Nutzung von build.gradle Ihr Beispiel usw. Messung der Deckung verursacht einen Fehler, der nach dem Hinzufügen von apply plugin: 'java' verschwindet.

+0

Hey, das habe ich schon probiert. Aber ich benutze dies auf Android, so dass ich nicht 'Apply plugin: 'java'' verwenden kann. Entschuldigung, ich habe vergessen zu erwähnen, dass ich die Tags aktualisiert habe. – Guido

+0

@Guido Ich entwickle mich nicht für Android, aber die Abwesenheit von 'Java' Plugin sieht seltsam aus. In jedem Fall glaube ich, dass Sie diese Inkompatibilität entweder an Entwickler von Gradle melden sollten (weil das JaCoCo-Plugin Teil der Gradle-Distribution ist), entweder an Entwickler von Plugins für Android. – Godin

+0

Das ist schon bekannt. Wenn Sie versuchen, 'apply plugin: 'java' in einer Android-Anwendung zu verwenden, erhalten Sie den folgenden Fehler:' Fehler: Das Plugin 'java' wurde angewendet, ist aber nicht mit den Android-Plugins kompatibel. ' – Guido

Verwandte Themen