6月份到时候就要搞Android代码覆盖率,但是当时客户端即将改版,所以就耽搁了。在Android大哥的帮助下,终于完成了初步的代码覆盖率统计。

在github上找到了封装好的jacocoTestHelper:

gradle配置:

apply plugin: 'com.android.application'

apply plugin: 'jacoco'

def coverageSourceDirs = [

'../app/src/main/java'

]

android {

compileSdkVersion 25

buildToolsVersion "25.0.2"

defaultConfig {

applicationId "com.test.app"

minSdkVersion 18

targetSdkVersion 25

versionCode 37

versionName "1.8.20.5"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {

debug {

testCoverageEnabled = true

}

release {

testCoverageEnabled = true

minifyEnabled false

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

}

}

lintOptions{

checkReleaseBuilds false

abortOnError false

}

}

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

}

}

}

}

dependencies {

compile 'com.github.Jay-Goo:JacocoTestHelper:v0.0.2'

}

现在仍存在问题:

手动执行时,执行结束按home退出,再重新打开app时,覆盖率统计可以叠加。如果用appium执行测试,每次open application时会重启app(我猜),重新调用JacocoHelper.init(),这样每执行一条都会生成一个coverage.ec文件,如何用多个ec文件生成覆盖率报告是未来要解决的问题,或者说,是否存在一种方法让appium open application的时候不进行杀掉重启。啊,任重道远啊。

另:最近发现用python直接写case并没有比用RF麻烦,而且执行速度感觉比RF快一点。RF的优点在于可以直观管理用例,android方面的关键字自己还是需要封装一些,现有的AppiumLibrary不能满足需求。

另2:此时特想搞个mbp,但是就以现在买买买的节奏,啥时候能攒下来钱哇(望天)

20170912

问题得以解决哈哈哈哈哈哈哈,稍晚更新解决方案,开心哈哈哈哈哈哈哈哈哈

20171101

更新:

appium每执行完一个case,点击两次回退退出app,将/mnt/sdcard/coverage.ec导出并重命名到指定路径(本文为$buildDir/outputs/code-coverage/connected/)

在gradle中增加:

task removeOldMergeEc(type: Delete) {

delete "$buildDir/outputs/code-coverage/connected/mergedcoverage.ec"

}

task mergeReport(type:JacocoMerge,dependsOn:removeOldMergeEc){

group = "Reporting"

description = "merge jacoco report."

destinationFile= file("$buildDir/outputs/code-coverage/connected/mergedcoverage.ec")

//"$buildDir/outputs/code-coverage/connected/"为存放.ec文件的路径

FileTree tree = fileTree("$buildDir/outputs/code-coverage/connected/") {

include '**/*.ec'

}

executionData = tree

}

并将上文task jacocoTestReport(type: JacocoReport)中以下代码进行修改:

executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec)

改为:

executionData = files("$buildDir/outputs/code-coverage/connected/mergedcoverage.ec")

所有case执行结束后,执行

gradlew mergeReport -Pec_dir="F:\Mox\Mox\mox-portal\build\outputs\code-coverage\connected"

确认"$buildDir/outputs/code-coverage/connected/路径下已生成mergedcoverage.ec后

gradlew jacocoTestReport

然后就可以开心的查看报告啦~

PS:以上参考了一位大佬的方法,但是链接找不到了。在此鸣谢。

Android多模块覆盖率,Android代码覆盖率初探—问题已解决!相关推荐

  1. Android多模块覆盖率,Android模块化开发中统计aar库的代码覆盖率

    现在android 开发都喜欢用模块化的方式,然后以aar文件的方式导入到主项目,但是这对于统计代码覆盖率就有点麻烦了,因为统计时候都忽略这些第三方库,那么我们如何将这些aar文件纳入到代码覆盖率的统 ...

  2. Android ui 单元测试 覆盖率,Android单元测试/Ui测试+JaCoCo覆盖率统计

    Android单元测试/Ui测试+JaCoCo覆盖率统计 参考资料1 参考资料2 背景说明 单元测试 从源代码着手,对源码中的最小可测试单元进行检查和验证,在对源代码有较深的理解下,编写测试单元,工作 ...

  3. android红外模块,基于Android平台的智能家居红外控制系统的研究

    摘要: 计算机技术,网络通信技术,智能传感技术,微电子技术的成熟和发展为智能家居的发展创造了良好的前提条件和基础.但现有的家居系统中都存在不足和缺点,而且在智能方面还存在较大的空白.本文针对这些不足和 ...

  4. Android服务模块作用,Android 9.0 AutotoMotive模块之CarService

    Android 9.0 AutotoMotive模块之CarService Android 9.0 AutotoMotive模块之CarService 上一篇对Automotive模块的Vhal作了总 ...

  5. android 支付模块封装,Android集成支付----支付宝支付总结与封装

    前言 类似于Android集成支付----微信支付总结与封装(可以查看本人另外一篇文章),本文对支付宝支付进行一个总结与封装.相比于微信支付,支付宝支付没有那么多坑. 集成支付宝支付SDK 这里只是简 ...

  6. android应用测试与调试实战_实战 | Java 服务端和 Android 端手工测试覆盖率统计的实现...

    本文为霍格沃兹测试学院优秀学员关于后端和 App 端手工测试覆盖率的学习笔记.测试开发进阶学习,文末加群. 一.前言 代码测试覆盖率工具流行了这么多年,已经有很多成熟方案比如 Jacoco,我司近一段 ...

  7. android 详细构建过程,Android构建模块详细步骤概述

    大家可能还记得,我们51CTO在一篇文章中介绍过有关Android模块的一些基本概念,相信大家应该可以对这些模块有一个深刻的认识了.在这里,我们会分步骤详细为大家讲解一下Android构建模块的相关知 ...

  8. dagger android,dagger.android多模块项目实现

    本文适合有一定的Dagger2使用基础的同学 前两篇文章我们讲了两种多模块项目怎么使用Dagger2. 发现在每个Activity的onCreate中都需要调一个inject方法NewsCompone ...

  9. 【Android 逆向】Android 逆向通用工具开发 ( Android 逆向通用工具组成部分 | 各模块间的关联 )

    文章目录 一.Android 逆向通用工具组成部分 二.Android 逆向通用工具 各模块间的关联 一.Android 逆向通用工具组成部分 Android 逆向通用工具 肯定是跨平台的 , 涉及到 ...

最新文章

  1. spring中的AnnotationConfigUtils
  2. 云接口给中小企业带来的帮助
  3. U-Boot 提供的基本命令
  4. svn 文件状态标记含义
  5. hdu 2553 N皇后问题 搜索 回溯法
  6. (数据库系统概论|王珊)第十一章并发控制-第一节:并发控制概述
  7. mysql q4m_Mysql Q4M 队列操作封装(二)
  8. 【LeetCode】剑指 Offer 45. 把数组排成最小的数
  9. 带有Upida/Jeneva的ASP.NET MVC单页应用程序(前端/AngularJS)
  10. 在控制台打印半径为R的圆
  11. 随想录(用python预测未来中国的GDP)
  12. iOS开发之字典(NSDictionary)和JSON字符串(NSString)之间互转
  13. 操盘软件富赢版V7 2016正式版
  14. C++中STL用法超详细总结
  15. 初学数据分析(一)【利用numpy实现矩阵标准化】
  16. ROS Launch使用总结
  17. oracle peoplesoft enterprise,Solix实现与Oracle PeopleSoft Enterprise9.1整合
  18. Address Sanitizer(Asan)原理及实战定位
  19. K2 BPM平台应用价值(上篇):统一的流程管理平台对企业有多重要?|工作流平台
  20. 【SQL Server】模糊查询

热门文章

  1. python主线程执行_python 并发执行之多线程
  2. 医学数据挖掘学习项目:他克莫司
  3. NTU 课程笔记: 网络流
  4. Tableau实战系列Tableau基础概念全解析 (二)-万字长文解析数据类型及数据集
  5. Leetcode每日必刷题库第1题,如何实现两数之和?
  6. 数据挖掘之KNN分类
  7. Python推荐博客、网站学习
  8. 【云计算】4_CDN加速产品介绍
  9. python中strip()的陷阱
  10. R语言-csv文件数据追加