• Android 单元测试覆盖率计算


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

    1.增加Plugin

    apply plugin: 'jacoco'

    2. 增加jacoco版本

    jacoco{
        version "0.7.4.201502262128"
    }
    

    3.申明一个gradle task

       //jacocoTestReport依赖于connectedAndroidTest task,所以在执行jacoco之前需要先执行connectedAndroidTest,也就是说需要连接测试机(模拟器or真机)
        task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
            group = "Reporting"
            description = "Generate Jacoco coverage reports after running tests."
            reports{
                xml.enabled = false
                html.enabled = true
                csv.enabled = false
            }
            classDirectories = fileTree(
                    dir : "$buildDir/intermediates/classes/debug",
        excludes : [
                '**/*Test.class',
                '**/R.class',
                '**/R$*.class',
                '**/BuildConfig.*',
                '**/Manifest*.*'
        ]
        )
        def coverageSourceDirs = ['src/main/java']
        additionalSourceDirs = files(coverageSourceDirs)
        sourceDirectories = files(coverageSourceDirs)
        additionalClassDirs = files(coverageSourceDirs)
        executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
    }
    

      

    4. 打开testCoverageEnabled

     buildTypes {
                debug {
                    testCoverageEnabled = true
                }
            }
    

      

    5. 完整的配置
    apply plugin: 'com.android.application'
    apply plugin: 'jacoco'
    
    android {
        compileSdkVersion 25
        buildToolsVersion "26.0.2"
        defaultConfig {
            applicationId "com.example.androidunittest"
            minSdkVersion 15
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                testCoverageEnabled = true
            }
            buildTypes {
                debug {
                    testCoverageEnabled = true
                }
            }
    
            jacoco{
                version "0.7.4.201502262128"
            }
        }
    
    
    //jacocoTestReport依赖于connectedAndroidTest task,所以在执行jacoco之前需要先执行connectedAndroidTest,也就是说需要连接测试机(模拟器or真机)
        task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
            group = "Reporting"
            description = "Generate Jacoco coverage reports after running tests."
            reports{
                xml.enabled = false
                html.enabled = true
                csv.enabled = false
            }
            classDirectories = fileTree(
                    dir : "$buildDir/intermediates/classes/debug",
                    excludes : [
                            '**/*Test.class',
                            '**/R.class',
                            '**/R$*.class',
                            '**/BuildConfig.*',
                            '**/Manifest*.*'
                    ]
            )
            def coverageSourceDirs = ['src/main/java']
            additionalSourceDirs = files(coverageSourceDirs)
            sourceDirectories = files(coverageSourceDirs)
            additionalClassDirs = files(coverageSourceDirs)
            executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
        }
    
    
    
        dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
                exclude group: 'com.android.support', module: 'support-annotations'
            })
            compile 'com.android.support:appcompat-v7:23.1.1'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testCompile 'junit:junit:4.12'
    
            androidTestCompile 'com.android.support.test:runner:0.5'
            androidTestCompile 'com.android.support.test:rules:0.5'
            androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    
        }
    }
    

      

    6. 运行报告

    gradlew jacocoTestReport

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

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

    解决方法:

    buildscript {
        repositories {
            mavenCentral()
            jcenter()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:2.2.3'
        }
    
    }
    

      

    2). Unsupported major.minor version 52.0

    解决方法:

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



  • 相关阅读:
    源码安装extundelete以及对遇到问题的解决
    centos 连不上网
    memcache 永久数据被踢
    svn 分支
    HTML5 中已经可以用 Ajax 上传文件了,而且代码非常简单,借助 FormData 类即可发送文件数据。
    sublime安装DocBlockr注释插件
    rsync 无密码 传输
    滚动条滑到底部,加载更多
    svn 同步脚本
    蒲公英[分块]
  • 原文地址:https://www.cnblogs.com/linlf03/p/8391099.html
Copyright © 2020-2023  润新知