Android UI自动化测试的代码覆盖率

发表于:2018-3-29 11:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:doctorq    来源:51Testing软件测试网采编

  代码覆盖率我们都知道,了解过jacoco也知道如何去弄,那么我们想要在跑UI自动化脚本的时候如何收集脚本执行过程中的代码覆盖率呢?首先我们知道jacoco可以得到测试的代码覆盖率,那么如果这些单测是UI的case,是不是就可以达到我们的要求,我们尝试一下,参考文档
  AS中新建android项目
 
  在android studio上新建一个android项目,默认build.gradle如下:
  apply plugin: 'com.android.application'
  android {
  compileSdkVersion 21
  buildToolsVersion "21.1.2"
  defaultConfig {
  applicationId "com.wuba.wuxian.android_0504"
  minSdkVersion 19
  targetSdkVersion 21
  versionCode 1
  versionName "1.0"
  }
  buildTypes {
  release {
  minifyEnabled false
  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  }
  }
  }
  dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:22.0.0'
  }
  执行测试
  执行connectedAndroidTest任务,在android studio中,执行测试任务的任务名为connectedAndroidTest(被坑了很久)。
  58deMacBook-Pro:app wuxian$ gradle clean connectedAndroidTest
  :app:clean
  :app:preBuild UP-TO-DATE
  :app:preDebugBuild UP-TO-DATE
  :app:compileDebugNdk UP-TO-DATE
  :app:checkDebugManifest
  :app:preReleaseBuild UP-TO-DATE
  :app:prepareComAndroidSupportAppcompatV72200Library
  :app:prepareComAndroidSupportSupportV42200Library
  :app:prepareDebugDependencies
  :app:compileDebugAidl
  :app:compileDebugRenderscript
  :app:generateDebugBuildConfig
  :app:generateDebugAssets UP-TO-DATE
  :app:mergeDebugAssets
  :app:generateDebugResValues UP-TO-DATE
  :app:generateDebugResources
  :app:mergeDebugResources
  /Users/wuxian/Documents/sourcecode/self/Android_05042/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.0.0/res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
  :app:processDebugManifest
  :app:processDebugResources
  :app:generateDebugSources
  :app:compileDebugJava
  :app:preDexDebug
  :app:dexDebug
  :app:processDebugJavaRes UP-TO-DATE
  :app:validateDebugSigning
  :app:packageDebug
  :app:zipalignDebug
  :app:assembleDebug
  :app:preDebugAndroidTestBuild UP-TO-DATE
  :app:compileDebugAndroidTestNdk UP-TO-DATE
  :app:prepareDebugAndroidTestDependencies
  :app:compileDebugAndroidTestAidl
  :app:processDebugAndroidTestManifest
  :app:compileDebugAndroidTestRenderscript
  :app:generateDebugAndroidTestBuildConfig
  :app:generateDebugAndroidTestAssets UP-TO-DATE
  :app:mergeDebugAndroidTestAssets
  :app:generateDebugAndroidTestResValues UP-TO-DATE
  :app:generateDebugAndroidTestResources
  :app:mergeDebugAndroidTestResources
  :app:processDebugAndroidTestResources
  :app:generateDebugAndroidTestSources
  :app:compileDebugAndroidTestJava
  :app:preDexDebugAndroidTest
  :app:dexDebugAndroidTest
  :app:processDebugAndroidTestJavaRes UP-TO-DATE
  :app:packageDebugAndroidTest
  :app:assembleDebugAndroidTest
  :app:connectedAndroidTest
  BUILD SUCCESSFUL
  Total time: 47.159 secs
  执行成功后,我们去找测试报告,可千万别去build下找reports目录啊,真心不一样有没有,带build/outputs/reports/androidTests/connected目录下打开index.html。
  在gradle中加入jacoco
  在build.gradle中添加如下信息:
  apply plugin: 'jacoco'
  ....
  jacoco{
  toolVersion = "0.7.1.201405082137"
  }
  android {
  buildTypes {
  debug {
  testCoverageEnabled = true
  }
  添加后的build.gradle如下所示:
  apply plugin: 'com.android.application'
  apply plugin: 'jacoco'
  android {
  compileSdkVersion 21
  buildToolsVersion "21.1.2"
  defaultConfig {
  applicationId "com.wuba.wuxian.android_0504"
  minSdkVersion 19
  targetSdkVersion 21
  versionCode 1
  versionName "1.0"
  }
  buildTypes {
  debug {
  testCoverageEnabled = true
  }
  release {
  minifyEnabled false
  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  }
  }
  }
  dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:22.0.0'
  }
  jacoco {
  toolVersion = "0.7.1.201405082137"
  }
  执行jacoco
  执行获得代码覆盖率的报告命令为createDebugCoverageReport
  58deMacBook-Pro:app wuxian$ gradle clean createDebugCoverageReport
  :app:clean
  :app:preBuild UP-TO-DATE
  :app:preDebugBuild UP-TO-DATE
  :app:compileDebugNdk UP-TO-DATE
  :app:checkDebugManifest
  :app:preReleaseBuild UP-TO-DATE
  :app:prepareComAndroidSupportAppcompatV72200Library
  :app:prepareComAndroidSupportSupportV42200Library
  :app:prepareDebugDependencies
  :app:compileDebugAidl
  :app:compileDebugRenderscript
  :app:generateDebugBuildConfig
  :app:generateDebugAssets UP-TO-DATE
  :app:mergeDebugAssets
  :app:generateDebugResValues UP-TO-DATE
  :app:generateDebugResources
  :app:mergeDebugResources
  /Users/wuxian/Documents/sourcecode/self/Android_05042/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.0.0/res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
  :app:processDebugManifest
  :app:processDebugResources
  :app:generateDebugSources
  :app:compileDebugJava
  :app:unzipJacocoAgent
  :app:instrumentDebug
  :app:preDexDebug
  :app:dexDebug
  :app:processDebugJavaRes UP-TO-DATE
  :app:validateDebugSigning
  :app:packageDebug
  :app:zipalignDebug
  :app:assembleDebug
  :app:preDebugAndroidTestBuild UP-TO-DATE
  :app:compileDebugAndroidTestNdk UP-TO-DATE
  :app:prepareDebugAndroidTestDependencies
  :app:compileDebugAndroidTestAidl
  :app:processDebugAndroidTestManifest
  :app:compileDebugAndroidTestRenderscript
  :app:generateDebugAndroidTestBuildConfig
  :app:generateDebugAndroidTestAssets UP-TO-DATE
  :app:mergeDebugAndroidTestAssets
  :app:generateDebugAndroidTestResValues UP-TO-DATE
  :app:generateDebugAndroidTestResources
  :app:mergeDebugAndroidTestResources
  :app:processDebugAndroidTestResources
  :app:generateDebugAndroidTestSources
  :app:compileDebugAndroidTestJava
  :app:preDexDebugAndroidTest
  :app:dexDebugAndroidTest
  :app:processDebugAndroidTestJavaRes UP-TO-DATE
  :app:packageDebugAndroidTest
  :app:assembleDebugAndroidTest
  :app:connectedAndroidTest
  :app:createDebugCoverageReport
  BUILD SUCCESSFUL
  Total time: 1 mins 6.089 secs
  ok,我们去查看代码覆盖率的报告:
  报告目录:
  报告形式:
 
  加入UI脚本
  上面的测试结果报告和代码覆盖率的报告都有了,但是我们的要求是执行UI脚本的时候,查看代码覆盖率的。所以我们现在加入UI脚本,我选择Robotium来编写自动化脚本,原因是Robotium是继承自instrumentation的框架,至于uiautomator的case看官方的介绍暂时还没有加入,以后可能会加入。



上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号