Jacoco

一、配置

1.在build.gradle中添加

apply plugin: 'jacoco'
jacoco {  
    toolVersion = "0.7.5.201505241946"
}

jacoco最新的version可以到这里检查。
2.在build.gradle中设置报表生成的task

task "$coverageTaskName" (type:JacocoReport, dependsOn: "$testTaskName") {  
    group = "Reporting"
    description = "Generate Jacoco coverage reports on the ${targetName} build."
    classDirectories = fileTree(
            dir: "${project.buildDir}/intermediates/classes/${sourceName}",
            excludes: ['**/R.class',
                       '**/R$*.class',
                       '**/*$ViewInjector*.*',
                       '**/BuildConfig.*',
                       '**/Manifest*.*']
    )  
    def coverageSourceDirs = [
            "src/main/java",
            "src/$productFlavorName/java",
            "src/$buildTypeName/java"
    ]
    additionalSourceDirs =files(coverageSourceDirs)
    sourceDirectories = files(coverageSourceDirs)
    executionData = files("${project.buildDir}/jacoco/${testTaskName}.exec")
    reports {
        xml.enabled = true
        html.enabled = true
    }
}

reports指定报表格式;
classDirectories指定class文件夹,并且可以根据pattern忽略一些class;
coverageSourceDirs 源文件目录;

二、运行

1.第一次运行jacocoTestReport,会报错/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/libinstrument.dylib which is undefined。定位到这两个目录,发现JDK真的不完整,第二个文件果然没有。然后重现安装JDK1.7后,运行jacocoTestReport还是上面的错,但是这两个文件都存在,于是clean project后,可以正常运行了。

2.解决各种编译时错误之后,会提示在file:///Users/XX/XX/build/reports/androidTests/connected/flavors/DEV/DEV.html#s目录下看运行Test的结果。

3.难题一:
这里写图片描述
通过adb devices 可以查询到当前是有device列表的。
这时候注意,jacoco要求Android5.0+的系统。这个问题在我不知道的时候,浪费了好多时间去解决。

难题二:
jacoco运行的结果不一定是准确的,例如:
这里写图片描述
这里写图片描述
实质上,这个Activity中是有这个控件和资源的。单独运行这个Test也是可以完全通过的。对于这个问题,我还没有找到解决办法,暂时先忽略这样的问题。

部分内容参考:http://www.dzwanli.com.cn/?p=1374#codesyntax_4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值