JaCoCo Test Coverage in Android 2023

Test coverage reports provide valuable insights into the effectiveness of your tests by showing which parts of your code are covered by the tests. In this blog post, we will explore how to generate test coverage reports using JaCoCo, a popular code coverage tool, with Gradle. We will cover the steps required to set up JaCoCo in your Gradle project and generate detailed test coverage reports.

Prerequisites:

Before we begin, make sure you have the following prerequisites set up:

  1. Android Studio or an alternative development environment.
  2. A basic understanding of Gradle and Android project structure.
  3. An Android Project

Gradle already has built-in support for generating test coverage reports and we don’t need to create any additional configurations or add any plugins to generate test coverage report.

Basically, the only thing we need to do, is to set testCoverageEnabled parameter to true in build.gradle file as follows:

Step 1: Update build.gradle File:

Open the build.gradle file for your module (usually located in the app module). Inside the buildTypes block, add the testCoverageEnabled parameter and set it to true for each build type where you want to generate test coverage reports. For example:

android {
    // Other configurations...
    buildTypes {
        release {
            // Other release configurations...
            testCoverageEnabled = true
        }
        debug {
            // Other debug configurations...
            testCoverageEnabled = true
        }
        // Add testCoverageEnabled = true for other build types as needed
    }
}

By setting testCoverageEnabled to true, you ensure that the necessary Gradle task is created for generating the coverage report.

Step 2: Generate Test Coverage Report:

To generate the test coverage report, you can execute the Gradle task from the command line using the following command:

./gradlew create<BuildType>CoverageReport

Replace <BuildType> with the desired build type (e.g., debug, release, etc.). For example, to generate a coverage report for the debug build type, you would use the command:

./gradlew createDebugCoverageReport

This Gradle task analyzes the code of your project located in the src/main/java/ directory, as well as the unit tests placed in the src/androidTest/java/ directory. It calculates the code coverage metrics and generates the report.

Step 3: Locate the Coverage Report:

After executing the Gradle task, you can find the generated test coverage report in the following directory within your module’s directory structure:

/build/outputs/reports/coverage/<BuildType>/

Replace <BuildType> with the specific build type for which you generated the coverage report. For example, if you ran the task for the debug build type, the coverage report would be located in:

/build/outputs/reports/coverage/debug/

Within this directory, you will find an HTML file (usually named index.html) that you can open in a web browser to view the detailed code coverage report.

Conclusion:

By following these steps, you can easily generate test coverage reports for your Android project using the default JaCoCo coverage report generator in Gradle. The reports provide valuable insights into the effectiveness of your tests and help you identify areas that require additional coverage. Regularly analyzing code coverage helps improve the overall quality and reliability of your application.

2 responses to “JaCoCo Test Coverage in Android 2023”

  1. Jan Godlewski Avatar
    Jan Godlewski

    Hi, I see only androidTests are taken into consideration while calculating code coverage.

    Is there a way to include also standard unitTests?

    Thanks
    Jan

    1. shirishkoirala Avatar

      Hi Jan, Thank you for your comment. It’s been a while since I have done something like this. If I remember correctly, that this included both the tests. However, I did some research and I found that there is a new way of doing it in Kotlin DSL.
      buildTypes {
      release {
      testCoverage {
      enableUnitTestCoverage = true
      enableAndroidTestCoverage = true
      }
      }
      }
      You should be able to find the report inside build/reports/tests/testUnitTest/. Hope this helps.

Leave a Reply

Your email address will not be published. Required fields are marked *