两分钟带你了解Jacoco
从测试小白一跃成为Testng专家
Java代码覆盖率实现方式有哪些
Jacoco的出发点是为基于JVM运行的代码提供代码覆盖率统计,期望提供轻量级的、可伸缩的、文档较全的库文件来集成各类构建和开发工具。
Java代码覆盖率工具有几款开源工具,当实现Eclipse插件EclEmma时,他们都不方便集成,大部门只适用于一款工具(ant,命令行,IDE插件),没有相关文档说明如何集成到不同的上下文环境中。其中两款比较好用的是EMMA 和 Cobertura,不过这两款原作者都不再维护了,也不再支持最新的JVM了,主要由于缺乏回归测试,造成添加新特征比较困难。
特此,作者开始开发Jacoco来提供一款全新的基于JVM运行的代码覆盖率工具,为集成各种构建开发工具提供轻量级的、可伸缩的、文档全面的库文件,如ant构建工具、maven插件、EclEmma Eclipse 插件,还有很多其它的开源工具集成了Jacoco。
Jacoco的特征:
-
覆盖率分析包括:指令覆盖(c0)、分支覆盖(c1)、代码行覆盖、方法覆盖、类覆盖和全复杂度;
-
基于java字节码分析,所以可以脱离java源代码;
-
通过on-the-fly指令集成java-agent,其它的集成场景比如可以通过api实现定制类加载;
-
可以与基于JVM的应用程序平滑集成,如java application,OSGI框架,web容器和EJB服务器;
-
可以兼容所有版本的java类;
-
报告支持多种格式,如HTML、XML、CSV;
-
可以随时通过远程协议和JMX控制agent dump覆盖率数据;
-
ant可以控制数据产生,生成结构化的报告;
-
maven插件可以在构建阶段收集覆盖率数据,生成报告;
非功能特征: -
简单易用,可以和现有的构建工具和脚本集成;
-
性能好,即便是大型项目,也之后占用较少的运行时间;
-
轻量级实现,对外部库和代码的依赖非常少;
-
全面的文档;
-
基于junit的回归测试测试用例
https://www.jacoco.org/jacoco/trunk/doc/mission.html
更多精彩内容欢迎关注B站账号