AndroidStudio中使用Jacoco统计Android应用程序代码覆盖率

AndroidStudio中使用Jacoco统计Android应用程序代码覆盖率

最近在做针对Android应用程序代码覆盖率的统计工作,刚开始从论文中看到大多数研究者采用emma这个工具来统计Android应用程序代码覆盖率,但是我看过一些资料后发现emma只能对eclipse中的Android项目进行插装,由于AndroidStudio(以下简称AS)项目结构和eclipse项目结构不同,因此无法用ant工具来编译AS项目(当然如果你精通ant工具,应该可以实现对AS项目的编译)。

看了很多参考文章,也入了很多坑,过程虽然艰苦,但最后还是达到了目的,下面进入正题。

一 准备文件

要使用的插装文件的下载地址:http://download.csdn.net/detail/cxq234843654/9693789

二 插装

2.1 添加插装文件

假设项目的包名为com.lzn.love.jyy,首先新建一个名为jacoco的包,之后将下载好的五个java文件放到jacoco包中

2.2 修改java文件

将InstrumentedActivity.java文件中类InstrumentedActivity的父类改为项目的入口Activity

2.3 配置AndroidManifest.xml文件

在原有的AndroidManifest.xml中添加如下代码:

android:handleProfiling="true"

android:label="JacocoInstrumentation"

android:name=".jacoco.JacocoInstrumentation"

android:targetPackage="com.lzn.love.jyy"/>

android:label="InstrumentationActivity"

android:name=".jacoco.InstrumentedActivity"/>

2.4 配置gradle文件

在gradle文件中添加如下代码:

apply plugin: 'jacoco'

在buildTypes中添加如下代码:

debug {

testCoverageEnabled = true

}

之后添加如下代码(和android平级):

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('$$', '$'))

}

}

}

}

三 运行并获取结果

1 在Android Studio的右侧,点击gradle图标,app->Tasks->install->installDebug,双击运行installDebug,之后可以看到相应的app便安装在设备中。

2 之后在控制台运行 adb shell am instrument com.lzn.love.jyy/.jacoco.JacocoInstrumentation,如无意外便会看到app被打开,此时你便可以进行手工或自动测试了。

3 测试完成之后有两种方法可以生成代码覆盖率测试报告

(1)测试完成后通过操作来退出app来生成coverage.ec文件

(2)通过向控制台发送 adb shell am broadcast -a com.lzn.love.jyy.jacoco.JacocoStopBroacast 来生成coverage.ec文件

4 在gradle projects视图下,app->Tasks->verification->createDebugCoverageReport,双击createDebugCoverageReport,此番操作后会在app/build/outputs下生成code-coverage目录

5 将生成的coverage.ec(保存在sd卡中)文件放入app\build\outputs\code-coverage\connected目录中

6 在gradle projects视图下,app->Tasks->reporting->jacocoTestReport,双击jacocoTestReport生成代码覆盖率报告,生成成功后便可在build\reports\jacoco\jacocoTestReport\html文件夹下,打开index.html就可以查看了

四 参考资料

http://blog.csdn.net/cxq234843654/article/details/53337935#comments;

http://www.dzwanli.com.cn/?p=1374

AndroidStudio中使用Jacoco统计Android应用程序代码覆盖率相关教程

android studio 代码覆盖率,AndroidStudio中使用Jacoco统计Android应用程序代码覆盖率相关推荐

  1. AndroidStudio中Attatch debugger to Android Ptocess时 Choose Process后OK是灰色的

    场景 AndroidStudio中Attatch debugger to Android Ptocess时 Choose Process后OK是灰色的 注: 博客: https://blog.csdn ...

  2. Android studio安装过程中入的坑的记录与记录

    Android studio安装过程中入的坑的记录与记录 * 由于最近项目的需求,所以最近一直在配置安卓的开发环境,之前用的是Eclipse + ADT的模式开发的,配置环境也花了一些时间,但是由于谷 ...

  3. 解决Android Studio安装过程中“SDK tools directory is missing”的问题

    解决Android Studio安装过程中"SDK tools directory is missing"的问题 参考文章: (1)解决Android Studio安装过程中&qu ...

  4. 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android

    背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...

  5. Android Studio使用过程中Java类突然报红,但项目可运行解决方案

    Android Studio使用过程中Java类突然报红,但项目可运行解决方案 参考文章: (1)Android Studio使用过程中Java类突然报红,但项目可运行解决方案 (2)https:// ...

  6. 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中导出安卓工程 | Android Studio 打开 Unity 导出的 Android 工程 )

    文章目录 一. Android 工程打包 二. Android Studio 打开 Unity 导出的 Android 工程 一. Android 工程打包 Android 工程打包 就是将 Unit ...

  7. Android Studio 3.0中mipmap-anydpi-v26是什么东东

    在Android Studio 3.0中一旦我们创建了一个项目,一个名为mipmap-anydpi-v26自动创建的文件夹在res文件夹下.它究竟能干什么?为什么我们需要这个?我们在开发时该如何利用它 ...

  8. 【Android】Android Studio 1.5+ 中混合调试Native和Java代码

    [Android]Android Studio 1.5+ 中调试Native和Java代码 Android Studio 1.5+表示Android Studio 1.5版本以及以上. 网上大部分中文 ...

  9. Android Studio 1.5+ 中调试Native和Java代码

    Android Studio 1.5+ 中调试Native和Java代码 步骤如下 1.安装了1.5版+的Android Studio 2.安装LLDB:(LLDB是Low Level DeBugge ...

最新文章

  1. Windows Presentation Foundation(介绍外连接)
  2. 摊牌了!国内首个基于结构光投影三维重建系列视频课程
  3. 使用JAXP对xml文档进行DOM解析基础
  4. 寄云-Paas云服务体验
  5. winform设置按钮流动_支付宝语雀上手体验:让知识流动起来
  6. 如何才能降低真机测试成本和建议所使用平台
  7. 实习踩坑之路:多线程+多个锁下面导致的数据库状态不对
  8. nginx + tomcat配置负载均衡
  9. 让FireFox火狐支持迅雷精简版
  10. SuperMap iClient3D for WebGL教程(特效)- 点光源
  11. 三相桥式全控整流电路simulink仿真_三相二极管桥式整流电路分析与仿真
  12. 数学函数模块math
  13. java pdf替换内容_java PDF批量替换关键词
  14. 不要上当,显示器用绿色背景有害视力
  15. 中文词性标注学习笔记(三)---词性标注
  16. HTML span 标签 的详细用法
  17. python中 [:],[::]的用法
  18. 循环机换变速箱油教程_标致308循环机更换自动变速箱油图文教程
  19. 两个特殊的段.init和.finit
  20. sql语句实现行转列的3种方法

热门文章

  1. 路由器到服务器稳定差,路由器到服务器丢包
  2. php安装依赖于mysql吗_PHP_老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略,一、首先安装MySql: 对于MySql - phpStudy...
  3. 鱼眼照片拍摄之鱼眼镜头与单反相机画幅的选择
  4. RTOS内功修炼记(一)—— 任务到底应该怎么写?
  5. Cstring GetBuffer 和 ReleaseBuffer
  6. eclipse配置maven环境
  7. xbin目录及toolbox,toybox
  8. 怎么给视频添加贴纸?建议使用这些添加技巧
  9. 解决windows应用商店Microsoft Store/OneNote无法联网问题,报错:错误代码0x80072F7D
  10. 数据库学习笔记(1)