安卓代码覆盖率: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的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
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+jacoco的更多相关文章
- 安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization
安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization 汉化包 百度云盘 ...
- 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,这个文件就 ...
- 安卓工作室 Android studio 或 Intellij IDEA 美化 修改 汉化 酷炫 装逼 Android studio or Intellij IDEA beautify modify Chinesization cool decoration
安卓工作室 Android studio 或 Intellij IDEA 美化 修改 汉化 酷炫 装逼 Android studio or Intellij IDEA beautify modify ...
随机推荐
- NOIP模拟赛-征兵
一个国王,他拥有一个国家.最近他因为国库里钱太多了,要征集一只部队要保卫国家.他选定了N个女兵和M个男兵,但事实上每征集一个兵他就要花10000RMB,即使国库里钱再多也伤不起啊.他发现,某男兵和某女 ...
- Access、Hybrid和Trunk
以太网端口有三种链路类型:Access.Hybrid和Trunk.Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口:Trunk类型的端口可以属于多个VLAN,可以接收和发送多个VL ...
- JS学习知我见(常用建站代码)
<!doctype html><html><head><meta charset="utf-8"><meta name=&qu ...
- A way to connect to network through WIFI on Centos 7
I bought a DELL laptop,but can not connect to network through wifi.There's lots of methods on the In ...
- 通过类名获取spring里的Bean
import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactor ...
- Hex string convert to Binary String and Vise-Versa(16进制和2进制字符串的相互转换)
这个转换在我们日常的编码中还是很有机会遇到的,这里贴出来和大家分享探讨. void pu_hex_to_binary(std::string strHex, std::string &strB ...
- 多媒体(2):WAVE文件格式分析
目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析
- 拦截JQuery的ajax
(function() { var _ajax = $.ajax; $.ajax = function(opts) { //实现自己的逻辑 _ajax(opts); }; })();
- [Altera]PLL仿真
EDA Tools: 1.Quartus II 13.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.05 ----------------------- ...
- Ionic打包过程下载Gradle失败的解决方法
安卓应用现在很多都是基于gradle进行大包,ionic默认的打包命令 cordova build --release android 就是使用gradle进行打包,但同时ionic也支持in ...