Empty Jacoco report for Android Espresso

Bryan Sills

I am trying to get code coverage for my Android project using Espresso tests. However, Jacoco is giving me back a report saying that I don't cover anything. I made a demo app to highlight my problem and that is here.

If you don't want to go to Github to look at the project, here is the build.gradle file:

apply plugin: 'com.android.application'
apply plugin: 'jacoco'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "ninja.bryansills.jacocotest"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    packagingOptions {
        exclude 'LICENSE.txt'
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            testCoverageEnabled true
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'

    androidTestCompile 'com.android.support.test:runner:0.2'
    androidTestCompile 'com.android.support.test:rules:0.2'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}
shauvik

Based on the issue pointed out by Ligol, here is what worked for me.

Added custom test runner in androidTest

package com.example;

import android.os.Bundle;
import android.support.test.runner.AndroidJUnitRunner;
import android.util.Log;

import java.lang.reflect.Method;

public class AndroidJacocoTestRunner extends AndroidJUnitRunner {

    static {
        System.setProperty("jacoco-agent.destfile", "/data/data/"+BuildConfig.APPLICATION_ID+"/coverage.ec");
    }

    @Override
    public void finish(int resultCode, Bundle results) {
        try {
            Class rt = Class.forName("org.jacoco.agent.rt.RT");
            Method getAgent = rt.getMethod("getAgent");
            Method dump = getAgent.getReturnType().getMethod("dump", boolean.class);
            Object agent = getAgent.invoke(null);
            dump.invoke(agent, false);
        } catch (Throwable e) {
            Log.d("JACOCO", e.getMessage());
        }
        super.finish(resultCode, results);
    }
}

Used this test runner in app/build.gradle

android{
    ...
    defaultConfig {
      ....
      testInstrumentationRunner "com.example.AndroidJacocoTestRunner"
    }
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Open JaCoCo report in Intellij IDEA

From Dev

gradle espresso - Empty test suite

From Dev

Jacoco Test coverage report shows 0%

From Dev

Android Espresso and Linkify

From Dev

How do I get a jacoco coverage report using Android gradle plugin 0.10.0 or higher?

From Dev

maven jacoco: not generating code coverage report

From Dev

Maven site not link to Jacoco report

From Dev

android espresso testing : empty test suite. no tests were found

From Dev

JaCoCo coverage report setups(exclude test classes)

From Dev

Android Studio Espresso Testing Error: Empty Test Suite

From Dev

Jacoco Report are not generated in the site

From Dev

Getting jacoco report from cucumber tests with gradle

From Dev

Android Espresso: Test running failed. No test results Empty test suite. Why?

From Dev

Android Studio Espresso Empty Test Suite

From Dev

Exclude folder in jacoco coverage report

From Dev

Jacoco with Android Gradle 1.3.0

From Dev

Jenkins jacoco plugin empty report

From Dev

Jacoco Android createDebugCoverageReport not found

From Dev

Jacoco Coverage and Report Task with Ant

From Dev

Android Espresso Intent

From Dev

maven jacoco plugin does not generate coverage report

From Dev

Jacoco Test coverage report shows 0%

From Dev

How do I get a jacoco coverage report using Android gradle plugin 0.10.0 or higher?

From Dev

JaCoCo Debug Coverage Test Report

From Dev

JaCoCo coverage report setups(exclude test classes)

From Dev

Empty Jacoco report for Android Espresso

From Dev

Jacoco Report Merging

From Dev

JaCoCo Report Format

From Dev

Can Jacoco CLI report be filtered via classfiles