android studio代码覆盖率,安卓代码覆盖率:android studio+ gradle+jacoco

在工程的oncreate()方法添加如下代码,目的是创建ec文件.

String DEFAULT_COVERAGE_FILE_PATH = "/mnt/sdcard/coverage.ec";

File file = new File(DEFAULT_COVERAGE_FILE_PATH);

if (!file.exists()) {

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

2.在工程的ondestory()方法添加如下代码,目的是写入数据.

OutputStream out = null;

try {

out = new FileOutputStream("/mnt/sdcard/coverage.ec", false);

Object agent = Class.forName("org.jacoco.agent.rt.RT")

.getMethod("getAgent")

.invoke(null);

out.write((byte[]) agent.getClass().getMethod("getExecutionData", boolean.class)

.invoke(agent, false));

} catch (Exception e) {

Log.d(TAG, e.toString(), e);

} finally {

if (out != null) {

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

3.build里面增加如下内容,目的是为了生成报告.ec文件放在./build/outputs目录下.

apply plugin: 'jacoco'

task jacocoTestReport (type:JacocoReport) {

group = "Reporting"

description = "Generate Jacoco coverage reports on the build."

classDirectories = fileTree(

dir: "${project.buildDir}/intermediates/classes",

excludes: ['**/R.class',

'**/R$*.class',

'**/*$ViewInjector*.*',

'**/BuildConfig.*',

'**/Manifest*.*']

)

def coverageSourceDirs = [

"src/main/java"

]

additionalSourceDirs = files(coverageSourceDirs)

sourceDirectories = files(coverageSourceDirs)

executionData = fileTree(dir:'./build/outputs',include:'**/*.ec')

reports {

xml.enabled = true

html.enabled = true

}

}

4. AndroidManifest.xml里面需要确认一下写sd的权限

5.在build.gradle的buildTypes添加一行代码testCoverageEnabled = true

6.生成apk后,进行手动测试,测试完毕后使用adb pull /sdcard/coverage.ec d:\test 进行导出,然后将ec文件放到./build/outputs目录下,执行命令:gradlew jacocoTestReport,然后就可以看报告了.

同时,上面这个做法可以完美解决这个报错:

java.io.FileNotFoundException: /jacoco.exec: open failed: EROFS (Read-only file system)

android studio gradle的坑

国产模拟器别国外的好用.非常傻瓜.有人推荐夜神. 之前用geom,下载Android都得半天.     每次做开发前,配置环境都要搞半天.尤其是想快速学习一个技术的话,光装环境都让人放弃了.最近想看一 ...

[转]加速Android Studio/Gradle构建

加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

解决Android Studio Gradle Build Running慢的问题

Android Studio方便好用,但是Android Studio Gradle Build Running很慢 解决方法: C:\Users\你的用户名\.gradle 目录下新建一个文件名为 ...

Android studio gradle 打包 那些事

总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...

解决Android Studio Gradle Build特别慢的问题

解决Android Studio Gradle Build 特别慢的问题 C:\Users\你的用户名\.gradle目录下新建一个文件名为gradle.properties的文件.内容为:org.g ...

android studio gradle 两种更新方法更新

android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...

android studio gradle 更新方法。

Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrapper gradle-wrapper.properties   (只要在打开项目的时候选OK,这个文件就 ...

随机推荐

C#设计模式(1)——单例模式

一.概念:确保一个类只有一个实例,并提供一个全局访问点. 二.单例模式具备如下几个特点: 1.只有一个实例. 2.能够自我实例化. 3.提供全局访问点.  三.代码实现 1.简单实现 /// < ...

&lbrack;Erlang37&rsqb;error&sol;1 exit&sol;1 exit&sol;2 throw&sol;1的区别

1. error/1 主要是系统用来定义内部错误的: Erlang内建的run time error 一共有10种: function_clause/case_clause/if_clause/bad ...

UVA1025---A Spy in the Metro(DP&rpar;

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35913 Secret agent Maria was sent to Alg ...

poj1845 数论

//Accepted 204K 16MS //约数和 //n=p1^e1*p2^e2***pk^ek //约数和为:(p1^0+p1^1+..+p1^e1)*(p2^0+p2^1+..+p2^e2)* ...

构建VIM下的C&plus;&plus;编程环境

1.VIM配置 Vim强大的配置与功能,其来源基本上就两个地方:Vim插件以及Vim配置文件. Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下.一般情况下 ...

Good Teacher(模拟)

Good Teacher Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Statu ...

CSS盒子的浮动

web前端学习笔记(CSS盒子的浮动) 在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素的边界:而在竖直方向和兄弟元素依次排列,不能并排.使用“浮动”方式后,块级元素的表现就会有所不同. ...

掌握Docker命令

1.管理镜像命令 获取镜像 docker push ubuntu:14:04 查看镜像列表 docker images 重命名image docker tag IMAGE-NAME NEW-IMAGE ...

Spring Boot - AMQP 消息中间件

Message Broker是一种消息验证.传输.路由的架构模式,其设计目标主要应用于下面这些场景: 消息路由到一个或多个目的地 消息转化为其他的表现方式 执行消息的聚集.消息的分解,并将结果发送到他 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值