Android中根据coverage.ec文件生成报告

Android中根据coverage.ec文件生成报告关于android中的代码覆盖率,可以参考我前几篇文章:Android手工测试代码覆盖率增强版Android手工测试的代码覆盖率AndroidUI自动化测试的代码覆盖率官方生成代码覆盖率报告的流程gradle为android提供的插件生成代码覆盖率的报告流程为首先在应用目录的生成coverage.ec文件(比如我们的应用package为com.wuba.wuxian.android_0

大家好,又见面了,我是你们的朋友全栈君。

关于android中的代码覆盖率,可以参考我前几篇文章:

Android手工测试代码覆盖率增强版
Android手工测试的代码覆盖率
Android UI自动化测试的代码覆盖率

官方生成代码覆盖率报告的流程

gradle为android提供的插件生成代码覆盖率的报告流程为首先在应用目录的生成coverage.ec文件(比如我们的应用package为com.wuba.wuxian.android_0504,那么这个coverage.ec在测试完成时会在android系统的/data/data/com.wuba.wuxian.android_0504/目录下生成),然后pull到本地的项目根目录的build/outputs/code-coverage/connected 目录下,这个时候执行createDebugCoverageReport 根据这个coverage.ec和build/intermediates/classes/debug 目录下的class文件生成报告,报告存放在项目根目录下/build/outputs/reports/coverage/debug 下。这个是官方的流程。

根据coverage.ec生成报告

我们在前一篇文章中得到了手工测试的代码覆盖率文件coverage.ec,现在我们根据这个文件如何生成代码覆盖率的报告呢?

很简单,首先我们将这个文件存放到build/outputs/code-coverage/connected下,然后在build.gradle加入如下语句:

apply plugin: 'jacoco'
def coverageSourceDirs = [
        '../app/src/main/java'
]

task jacocoTestReport(type: JacocoReport) {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
    reports {
        xml.enabled = true
        html.enabled = true
    }
    classDirectories = fileTree(
            dir: './build/intermediates/classes/debug',
            excludes: ['**/R*.class',
                       '**/*$InjectAdapter.class',
                       '**/*$ModuleAdapter.class',
                       '**/*$ViewInjector*.class'
            ])
    sourceDirectories = files(coverageSourceDirs)
    executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")

    doFirst {
        new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
            if (file.name.contains('$$')) {
                file.renameTo(file.path.replace('$$', '$'))
            }
        }
    }
}

然后我们执行gradle jacocoTestReport 生成报告,报告的存放目录为项目根目录下的 build/reports/jacoco/jacocoTestReport目录下:

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162113.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 阿里云Maven仓库完整版[通俗易懂]

    阿里云Maven仓库完整版[通俗易懂]阿里云Maven仓库完整版<?xmlversion=”1.0″encoding=”UTF-8″?><!–LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTICEfiledistributedwiththisworkforadditionalinformationregardingcopy

    2022年10月28日
    0
  • pycharm自动退出_pycharm怎么debug

    pycharm自动退出_pycharm怎么debug起因:今天在学习py的时候,学到了numpy以及pandas,然后我的pycharm莫名其妙就进入了一个啥啥科学模式,就是执行代码都在pythonConsole里面去了,原谅小白不懂这玩意。。。然后怎么也回不到过去了!!!小白都惊呆了,这可咋整。。于是去求助开发大佬~得到解决方法如下:Settings–>Tools–>PythonScientific>Showplotsintoolwindow取消勾选View取消勾选ScientificMode

    2022年8月25日
    3
  • iPhone屏幕尺寸、分辨率及适配

    从初代iPhone3GS到现如今的iPhone6(+),屏幕尺寸、分辨率、像素密度都在在不断增大。如何适配不同的屏幕尺寸,使UI更加协调美观,这给iPhone/iOS应用开发者带来了挑战。本文结合个人在iOSUI开发和适配方面的粗浅经验,对常用屏幕适配相关因素做个梳理盘点,以备日后查阅。

    2022年4月7日
    222
  • 关于自建blog

    关于自建blog

    2021年5月12日
    128
  • parallel循环java_Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试…[通俗易懂]

    parallel循环java_Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试…[通俗易懂]Java8里面的stream有串行流和并行流之分。说高级的stream就是那个并行流。下面是那个并行流的简单实现。只要是继承Collection类的都可以这么用。list.stream().parallel()list.parallelStream()先看代码和运行结果,再解释一下,这个并行串行流之间的差别。packagecom.lxk.lambdaTest;importcom.goog…

    2022年7月19日
    23
  • Lintcode 1667.石头

    Lintcode 1667.石头题目大意:一条直线上有n个石头,一个人从左往右走,碰到奇数块石头(碰到一块石头数一个数,这里指数的数是奇数),就往右扔,碰到偶数的石头就不管他,如果两块石头在同一个位置,就扔大的那块(能扔的距离小的)。问最后最远的那块石头的位置。思路:用优先队列模拟,每遇到奇数石头,就将其坐标加上D[i],放回优先队列,当石头重叠时,先扔投大的(能扔的距离小的),故在比较函数中,以位置为第一关键字,以投掷距离…

    2022年7月24日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号