在工程下面的build.gradle 增加配置

1.增加Plugin

apply plugin: \’jacoco\’

 

2. 增加jacoco版本

  1. jacoco{
  2. version "0.7.4.201502262128"
  3. }

 

3.申明一个gradle task

  1. //jacocoTestReport依赖于connectedAndroidTest task,所以在执行jacoco之前需要先执行connectedAndroidTest,也就是说需要连接测试机(模拟器or真机)
  2. task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
  3. group = "Reporting"
  4. description = "Generate Jacoco coverage reports after running tests."
  5. reports{
  6. xml.enabled = false
  7. html.enabled = true
  8. csv.enabled = false
  9. }
  10. classDirectories = fileTree(
  11. dir : "$buildDir/intermediates/classes/debug",
  12. excludes : [
  13. \'**/*Test.class\',
  14. \'**/R.class\',
  15. \'**/R$*.class\',
  16. \'**/BuildConfig.*\',
  17. \'**/Manifest*.*\'
  18. ]
  19. )
  20. def coverageSourceDirs = [\'src/main/java\']
  21. additionalSourceDirs = files(coverageSourceDirs)
  22. sourceDirectories = files(coverageSourceDirs)
  23. additionalClassDirs = files(coverageSourceDirs)
  24. executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
  25. }

  

4. 打开testCoverageEnabled

  1. buildTypes {
  2. debug {
  3. testCoverageEnabled = true
  4. }
  5. }

  

 

  1. 5. 完整的配置
  1. apply plugin: \'com.android.application\'
  2. apply plugin: \'jacoco\'
  3.  
  4. android {
  5. compileSdkVersion 25
  6. buildToolsVersion "26.0.2"
  7. defaultConfig {
  8. applicationId "com.example.androidunittest"
  9. minSdkVersion 15
  10. targetSdkVersion 25
  11. versionCode 1
  12. versionName "1.0"
  13. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  14. }
  15. buildTypes {
  16. release {
  17. minifyEnabled false
  18. proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard-rules.pro\'
  19. testCoverageEnabled = true
  20. }
  21. buildTypes {
  22. debug {
  23. testCoverageEnabled = true
  24. }
  25. }
  26.  
  27. jacoco{
  28. version "0.7.4.201502262128"
  29. }
  30. }
  31.  
  32.  
  33. //jacocoTestReport依赖于connectedAndroidTest task,所以在执行jacoco之前需要先执行connectedAndroidTest,也就是说需要连接测试机(模拟器or真机)
  34. task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
  35. group = "Reporting"
  36. description = "Generate Jacoco coverage reports after running tests."
  37. reports{
  38. xml.enabled = false
  39. html.enabled = true
  40. csv.enabled = false
  41. }
  42. classDirectories = fileTree(
  43. dir : "$buildDir/intermediates/classes/debug",
  44. excludes : [
  45. \'**/*Test.class\',
  46. \'**/R.class\',
  47. \'**/R$*.class\',
  48. \'**/BuildConfig.*\',
  49. \'**/Manifest*.*\'
  50. ]
  51. )
  52. def coverageSourceDirs = [\'src/main/java\']
  53. additionalSourceDirs = files(coverageSourceDirs)
  54. sourceDirectories = files(coverageSourceDirs)
  55. additionalClassDirs = files(coverageSourceDirs)
  56. executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
  57. }
  58.  
  59.  
  60.  
  61. dependencies {
  62. compile fileTree(dir: \'libs\', include: [\'*.jar\'])
  63. androidTestCompile(\'com.android.support.test.espresso:espresso-core:2.2.2\', {
  64. exclude group: \'com.android.support\', module: \'support-annotations\'
  65. })
  66. compile \'com.android.support:appcompat-v7:23.1.1\'
  67. compile \'com.android.support.constraint:constraint-layout:1.0.2\'
  68. testCompile \'junit:junit:4.12\'
  69.  
  70. androidTestCompile \'com.android.support.test:runner:0.5\'
  71. androidTestCompile \'com.android.support.test:rules:0.5\'
  72. androidTestCompile \'com.android.support.test.espresso:espresso-core:2.2.2\'
  73.  
  74. }
  75. }

  

6. 运行报告

gradlew jacocoTestReport

运行生成报告命令可能出现的问题

1). Could not find com.android.tools.build:gradle:2.2.3

解决方法:

  1. buildscript {
  2. repositories {
  3. mavenCentral()
  4. jcenter()
  5. }
  6.  
  7. dependencies {
  8. classpath \'com.android.tools.build:gradle:2.2.3\'
  9. }
  10.  
  11. }

  

2). Unsupported major.minor version 52.0

解决方法:

 

 

 

参考:http://blog.csdn.net/it_talk/article/details/50267573



版权声明:本文为linlf03原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/linlf03/archive/2004/01/13/8391099.html