• 统计 Android 单元测试代码覆盖率

    发布:51Code 时间: 2018-04-28 10:05

  • 为程序编写单元测试对于我一个境界比较low的程序员来说,简直就是噩梦,但是不得承认,为项目写测试是个非常正确、必要的工作,尤其是当项目越来越大,代码越来越多,测试代码...

  • 为程序编写单元测试对于我一个境界比较low的程序员来说,简直就是噩梦,但是不得承认,为项目写测试是个非常正确、必要的工作,尤其是当项目越来越大,代码越来越多,测试代码可以及时检查出一次改动所带来的影响。

    单元测试覆盖率可以从一方面检查测试的质量,这个数据也是 Boss 最想看见的,而较高的覆盖率是 Boss 最希望看见的。Java项目有个很好的工具 :jacoco,可以快速的统计处 Junit 测试代码的覆盖率,并能生成详细的报告,具体方法,网上可以找出很多。本文只讨论 Android 上的情况

    Android 提供了一很方便的方法来统计单元测试覆盖率,很简单,也许是搜索的姿势不对,度娘愣是不告诉我,这时有个网速碉堡的 VPN 是件多么爽的事!谷歌一下,你就知道!在这里和这里找到了方法,总结下:

    环境

    Android Studio 1.4

    配置

      build.gradle 文件 android节点下设置 testCoverageEnabled 属性和 jacoco ,如下所示:

      buildTypes {

              release {

                  minifyEnabled false

                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

              }

              debug {

                  testCoverageEnabled = true

              }

          }

          jacoco {

              version "0.7.4.201502262128"

          }

    这里是 Module app 下的 build.gradle 文件所有内容:

      apply plugin: 'com.android.application'

      android {

          compileSdkVersion 21

          buildToolsVersion "22.0.1"

          defaultConfig {

              applicationId "com.coderpage.coveragetest"

              minSdkVersion 9

              targetSdkVersion 21

              versionCode 1

              versionName "1.0"

          }

          buildTypes {

              release {

                  minifyEnabled false

                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

              }

              debug {

                  testCoverageEnabled = true

              }

          }

          jacoco {

              version "0.7.4.201502262128"

          }

      }

      dependencies {

          compile fileTree(dir: 'libs', include: ['*.jar'])

          testCompile 'junit:junit:4.12'

          compile 'com.android.support:appcompat-v7:21.0.3'

      }

    生成覆盖率报告

    $ ./gradlew createDebugCoverageReport

    在 ${builddir}/reports/coverage/debug/index.html 就会出现测试覆盖率报告了

    遇到的坑

    因为开始用的是 gradle 1.3.0 ,运行脚本命令的时候出现了错误:

    Task ‘createDebugCoverageReport’ not found in root project

    在 这里 找到了原因,在 gradle 1.3.0 版本,移除了 createDebugCoverageReport Task,把 gradle 升级一下版本到 gradle 1.3.1 就 OK 了!

    原文作者:未知
    上文内容来自:51testing软件测试网采编
    博为峰对此不表示赞同或者反对,也不为其提供证明,仅供阅读者交流参考。
    上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编caoxiaoyan@51testing.com,我们将立即处理
  • 上一篇:APP测试入门——常见功能测试点汇总

    下一篇:测试开发-iOS测试之移动端测试用例设计总结

网站导航
Copyright(C)51Code软件开发网 2003-2018 , 沪ICP备16012939号-1