2015-03-13 74 views
4

我能够按照以下步骤获得的代码覆盖率报告,Jacoco转换coverage.ec报道没有coverage.em

  1. 你想构建类型启用覆盖(例如调试)

    buildTypes { debug { testCoverageEnabled true } }

  2. 应用Jacoco插件,并设置版本

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

  3. 运行

    ./gradlew createDebugCoverageReport

  4. 所有connectedAndroidTest测试运行,并覆盖报告是基于他们产生。我可以在

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

找到覆盖报告和coverage.ec文件

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

但没有jacoco.exec,因为我是从Android的仪器,而不是Robolectric运行测试用例。

当我运行从ADB仪表(我想这依然采用艾玛)如下,我得到一个coverage.ec文件,如下所示,

$ 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 

但我不能够覆盖转换.ec使用emma报告,因为coverage.em文件丢失,

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 

是否有解决此问题的方法?

+0

我可以使用自定义gradle这个任务coverage.ec文件转换为jacoco报告,落实在https://github.com/srideviaishwariya/Automation-Tools- for Android/tree/master/Sample1 – sri 2015-03-28 20:44:14

回答

7

只需使用“coverage.ec”作为“.exec”的文件,它的工作对我来说

这是谷歌在Android中摇篮插件的源代码一样。

public static final String FILE_COVERAGE_EC =“coverage.ec”;

in SimpleTestCallable.java com.android.builder.internal.testing包下。

+2

哇,是的,你可以简单地将文件重命名为'coverage.exec',它可以在Android Studio(2.0)的'Show Coverage Data'下选择,并且你的所有代码都很好地突出显示在编辑器窗口中。 – 2015-12-26 21:34:59

+2

@NicolasGramlich我将它更改为exec,并通过Show Coverage Data打开它 - 但它显示所有代码为0% – 2016-09-11 15:21:51

+0

@UrielFrankel我遇到了同样的问题,那么您是否解决了它? – 2016-10-20 12:03:29

3

我写了一篇关于同一场景和我的解决方案的文章。 You can read it here。为了回答这个具体问题,你应该做以下步骤: 的gradle更改此:

apply plugin: 'jacoco' 
jacoco { 
    toolVersion = '0.7.5.201505241946' 
} 

download this jar。继续你做的事情,直到你有coverage.ec文件。然后当你运行它:

java -jar android-jacoco-the-missing.jar -f /path/to/coverage.ec -p ./path/to/android/project 

而那就是它!该jar将生成一个代码覆盖率的文件夹。

另一种选择是使用带有Jenkins Jacoco插件的coverage.ec。但为此,你需要让詹金斯开始。

+0

执行jar总是给我'FileNotFoundException'。该文件在那里,我多次检查路径。 – 2017-04-02 10:16:23

+0

你确定这个文件的名字是正确的吗? – 2017-04-02 10:17:55

+0

+也许项目目录路径是错误的 – 2017-04-02 10:22:12

0

删除。从下面的命令它为我工作

java -jar android-jacoco-the-missing.jar -f /path/to/coverage.ec -p /path/to/android/project 
+0

哦,你是对的 – 2017-07-18 13:08:51