gradle复习(7)-深入Jacoco

最后更新于:2022-04-01 06:52:22

接着昨天的写,昨天讲到jacoco可以test任务中配置,形式如下: ~~~ test { useTestNG(); jacoco{ ...... } } ~~~ 之前的文章讲了append和destinaFile这两个属性,下面接着讲第三个属性。 ## 3.classDumpFile 将jacoco检测到的class文件保存到的文件 build.gradle ~~~ test { useTestNG(); jacoco{ append = false destinationFile = file("$buildDir/doctor/doctorq.exec") classDumpFile = file("$buildDir/doctor/class") } } ~~~ 执行gradle clean test后,会发现多了一个build/doctor/class文件: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-07_568e466cef065.jpg) 这里面的文件和exec文件里列举的一样。这个属性不太需要,过了! ## 不止是test任务 我们之前讲的所有关于jacoco的内容,都是收集test任务的代码覆盖率。但是jacoco不只是用于这样一个测试任务,由于jacoco的原理是在jvm环境中进行插桩监控jvm中被调用的代码,那么只要是在java进程中执行的任务,都可以用jacoco来收集信息。好,下面来举例说明:当我们执行java程序main方法时,也可以通过jacoco来收集main方法的代码覆盖率。 新增main方法: ~~~ public class MyMain { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Person person = new Person("Larry"); System.out.println(person.getName()); } } ~~~ build.gradle中新增任务 ~~~ jacoco{ toolVersion = "0.7.1.201405082137" reportsDir = file("$buildDir/customJacocoReportDir") applyTo run } task applicationCodeCoverageReport(type:JacocoReport){ executionData run sourceSets sourceSets.main } ~~~ 我们执行run任务再执行applicationCodeCoverageReport任务,看结果输出 ~~~ D:\eclipse\workspare\TestNG_gradl>gradle clean run applicationCodeCoverageRepor :clean :compileJava :processResources :classes :run Larry :applicationCodeCoverageReport BUILD SUCCESSFUL Total time: 6.333 secs ~~~ 然后看代码覆盖率的报告 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-07_568e466d09d5a.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-07_568e466d281d4.jpg) 上面的例子中我们测试了main方法代码覆盖率,还有很多其他的任务可以获得代码覆盖率信息,等待我以后了解了再添加。
';