Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use JaCoCo in Android Project with Gradle

I have an android project with Gradle 5.1.1 I want to use JaCoCo to generate HTML reports about test code coverage. I tried to follow the instructions in some articles, but all of my attempts led to errors.

All that worked for me is applying plugin 'jacoco' (Project successfully builded after that).

apply plugin: 'jacoco'

But as soon as i add task 'jacocoTestReport', Gradle cannot sync with files and i get this error.

That's my task:

jacocoTestReport {
reports {
    html.enabled true
    xml.enabled false
    csv.enabled false
    html.destination file("${buildDir}/jacocoHtml")
}}

That's my error:

ERROR: Could not find method jacocoTestReport() for arguments [build_8kqk7qvpoocfxfydulk1p4m35$_run_closure3@1aba12a5] on project ':app' of type org.gradle.api.Project.

I tried using "gradlew clean build" after adding "apply plugin" in 'build.gradle'. Author of tutorial successfully added task and used this line in terminal to get jacoco report:

gradlew build jacocoTestReport

Here's links to articles i used to understand how to add jacoco to project:

https://reflectoring.io/jacoco/

https://android.jlelse.eu/get-beautiful-coverage-reports-in-your-android-projects-ce9ba281507f

So my question is: Is there a way to add Jacoco to Android Project with Gradle? What am i doing wrong?

like image 553
Igor Lopatinkiy Avatar asked Jul 15 '19 15:07

Igor Lopatinkiy


People also ask

Does JaCoCo support Kotlin?

According to the Kotlin team, test coverage tools like JaCoCo admittedly work with the language, but integrating them into their Gradle toolchain or multi-platform projects still leaves a bit to be desired.


1 Answers

Might just be a missing copy paste, but make sure you define your function as a task in gradle, ie: task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) {

I followed this blog for setting my Jacoco instance in my initial projects and found it quite helpful. https://engineering.rallyhealth.com/android/code-coverage/testing/2018/06/04/android-code-coverage.html

like image 138
Kyle Avatar answered Oct 19 '22 09:10

Kyle