五陵年少金市东,银鞍白马渡春风。这篇文章主要讲述安卓代码覆盖率: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(); } }
【安卓代码覆盖率:android studio+ gradle+jacoco】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 thebuild."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 = https://www.songbingjia.com/android/fileTree(dir:‘./build/outputs‘,include:‘**/*.ec‘)reports {xml.enabled = truehtml.enabled = true}}
4. androidManifest.xml里面需要确认一下写sd的权限
< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
5.生成apk后,进行手动测试,测试完毕后使用adb pull /sdcard/coverage.ec d:\test 进行导出,然后将ec文件放到./build/outputs目录下,执行命令:gradlew jacocoTestReport,然后就可以看报告了.
推荐阅读
- Android Private Libraries 和 Dependencies的区别
- Android帧动画
- Android应用框架之PackageManagerService
- Android-触摸
- android快速开发--常用utils类
- Android--Retrofit+RxJava
- Android常用库
- Cocos2d-x 3.x部署到安卓
- Android 系统版本&API对照表