Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jacoco converting coverage.ec to reports without coverage.em

I was able to get the code coverage report by following the steps below,

  1. Enable coverage on the build type you want (e.g. debug)

    buildTypes { debug { testCoverageEnabled true } }

  2. Apply Jacoco plugin and set version

    apply plugin: 'jacoco' jacoco { version "0.7.1.201405082137" }

  3. Run

    ./gradlew createDebugCoverageReport

  4. All the tests in connectedAndroidTest are run and coverage report is generated based on them. I can find the coverage reports in

    app/build/outputs/reports/coverage/{buildType}/index.html

and a coverage.ec file in

app/build/outputs/code-coverage/connected/coverage.ec

But no jacoco.exec since I am running from Android Instrumentation instead of Robolectric test cases.

And when I run the instrumentation from ADB ( I guess this is still using Emma ) as follows, I get a coverage.ec file as follows,

$ adb shell am instrument -w -e coverage true -e coverageFile /sdcard/coverage.ec com.sample.helloworld.test/.Runner
....
OK (4 tests)

Generated code coverage data to /sdcard/coverage.ec

But I am not able to convert the coverage.ec to report using emma since the coverage.em file is missing,

java -cp ~/adt-bundle-mac-x86_64-20130729/sdk/tools/lib/emma_device.jar emma report -r html -in \
coverage.em,myFile.ec,myapp_coverage1.ec -sp /path/to/myapp/src

Is there a way around this problem??

like image 569
sri Avatar asked Dec 11 '22 00:12

sri


1 Answers

Simply use the "coverage.ec" as the ".exec" file, it's worked for me

This is what Google did in Android Gradle Plugin source code.

public static final String FILE_COVERAGE_EC = "coverage.ec";

in SimpleTestCallable.java under com.android.builder.internal.testing package.

like image 181
Carlos Herrera Muñoz Avatar answered Dec 28 '22 09:12

Carlos Herrera Muñoz