一、概述

Jacoco 统计的是全量代码覆盖率。它不仅支持生成单元测试的覆盖率,也支持监控生成接口测试,功能测试的覆盖率。

在新一代精准测试技术流的影响中,各大型单位对覆盖率的追求越来越迫切。作为一款开源产品,它主机面向Java语言,能够在字节码层面给出覆盖率,同时也能将字节码关联到对应的源代码。这种半精准的测试方式,在小型团队中,对于某些场景的覆盖率诉求,起到了一定的响应。但它也有很强的局限性,尤其在支撑大型系统应用中,其表现能力弱,准确率不够达标。

不同的编程语言有不同的技术去实现代码覆盖统计,如JAVA的Jacoco ,C++的Testwell ,Python的Coverage.Py 等等。

二、下载

下载后随意放在一个目录,解压即可。

官网地址:http://eclemma.org/jacoco/

三、java命令直接使用配置

1、java运行

java -javaagent:/temp/jacocoagent.jar=includes=com.java2nb,*,output=tcpserver,port=6363,address=192.168.1.8,append=true -jar novel-front-3.5.4.jar

配置参数:

includes:你要统计哪些包里面的代码
output:统计数据以什么形式导出
port和address:访问这个导出服务的 ip和端口

2、使用 jacococli.jar 拉取代码覆盖率统计信息 (从应用服务器上面拉数据),即生成acoco_test.exec文件

java -jar /temp/jacococli.jar dump --address 192.168.1.8 --port 6300 --destfile ./jacoco_test.exec

3、使用 jacococli.jar 分析代码覆盖率统计信息 (输出一个html报告形式)

java -jar /temp/jacococli.jar report ./jacoco_test.exec --sourcefiles D:\work\src\main\java --classfiles D:\work\target\classes --html ./report_test --encoding utf-8

4、在report_test目录下,打开index.html文件查看报告

分析报告:
Element - 代码包
Instructions Cov(看这个数值低,即很多代码没被执行)

四、tomcat中配置

1、关闭tomcat的服务,修改 catalina.sh 的JAVA_OPTS配置

# -javaagent: 的后面跟jacoco的安装路径
# includes= 选项,选择你要覆盖率的服务
# port= 选项,选择你要打开的端口,和你tomcat的服务端口要不一样,即是一个其他人未占用的端口
# address= 选项,tomcat服务所在机器的ip地址(如果想在跟tomcat服务同一台机器上执行ant任务的话,需要改为127.0.0.1)
JAVA_OPTS="-javaagent:$jacoco_path/lib/jacocoagent.jar=includes=com.netease.yourserver.*,output=tcpserver,address=xx.xx.xx.xx,port=12345"

2、启动服务,如果发现启动主程序异常,那么在JAVA_OPTS 配置中再加一项-Xverify:none

五、分析结果注意

测试没有覆盖到的地方,有如下几种可能

1、测试用例设计不完善
2、用例执行者执行时漏测
3、开发人员没删除废弃的代码功能

参考:

https://juejin.cn/post/6907552109915275277
https://www.jianshu.com/p/c6fafb50b07a?clicktime=1577953523
https://www.sohu.com/a/498359940_120941200
https://it.sohu.com/a/696322070_120635785
https://www.cnblogs.com/xiao2shiqi/p/16370471.html
https://www.cnblogs.com/liuyitan/p/15716027.html
滴滴开源Super-jacoco:java代码覆盖率收集平台:
https://www.hctestedu.com/live_pc/l_65a0df5ee4b064a8fbe4a31e

用jacoco统计JAVA项目测试代码覆盖率的更多相关文章

  1. java项目测试环境搭建

    java项目测试环境搭建 2019-03-06 13:45:26 木瓜小少年 阅读数 691更多 分类专栏: 测试   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原 ...

  2. 统计Java项目的代码行数

    Java项目谈论行数多少有点无聊,但是有的时候就想看看一个开源的代码的量级,用Shell命令统计再合适不过了 去掉空行和注释: find . -name "*.java" |xar ...

  3. java项目测试log4j

    .literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...

  4. kafka java项目测试使用

    引入依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11 ...

  5. java项目测试或者不使用request,如何获取webroot路径

    1.使用jdk中的方法,然后根据项目编译后的文件存在的位置,获取到classes目录,然后向上级查询获取String path = EngineTest.class.getResource(" ...

  6. Selenium+java项目测试问题整理

    一.页面跳转到另一链接 问题描述:打开页面链接为A.com,但是页面元素需跳转到链接B.com.这时B页面将无法识别该元素,导致拨错 解决方案:重新自定义驱动,打开新链接 (PS:比较笨的解决方法,但 ...

  7. jacoco统计自动化代码覆盖率

    jacoco统计自动化代码覆盖率 1. 简介 1.1. 什么是Jacoco Jacoco是一个开源的代码覆盖率工具,可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以 ...

  8. 统计 Django 项目的测试覆盖率

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...

  9. 记一次完整的java项目压力测试

    总结:通过这次压力测试,增加了对程序的理解:假定正常情况下方法执行时间为2秒,吞吐量为100/s,则并发为200/s:假设用户可接受范围为10s,那么并发量可以继续增加到1000/s,到这个时候一切还 ...

  10. 使用Jacoco统计服务端代码覆盖情况实践

    一.背景 随着需求的迭代,需求增加的同时,有可能会伴随着一些功能的下线.如果不对系统已经不用的代码进行梳理并删除不需要的代码,那么就会增加系统维护成本以及理解成本.但经历比较长的迭代以及系统交接,可能 ...

随机推荐

  1. 使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力

    Rainbond是一体化的云原生应用管理平台,它提供"以应用为中心"的抽象,使用者不需要学习K8s和容器,平台将K8s和容器封装在内部,这种封装方式能极大提高使用的易用性和安装的便 ...

  2. firewall防火墙基础配置

    Firewalld防火墙 Centos7 中集成了防火墙管理工具, Firewall系统动态防火墙管理器是作为默认的防火墙工具. 它支持规则动态更新,并加入zone区域概念. Firewalld防火墙 ...

  3. mediaserverd

    1.mediaserverd是什么 mediaserverd(/usr/sbin/mediaserverd)是被root进程launchd启动的一个后台(daemon)进程,其描述文件为com.app ...

  4. 微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor

    前言 今天大姚给大家分享一个由微软官方开源(MIT License).免费的Blazor UI组件库:Fluent UI Blazor. 全面的ASP.NET Core Blazor简介和快速入门 F ...

  5. Mysql 创建索引语句

    mysql有哪些索引 index 普通索引 alter table table_name add index index_name(column) 最基本的索引,没有任何限制 primary key ...

  6. [Qt开发]当我们在开发兼容高分辨率和高缩放比、高DPI屏幕的软件时,我们在谈论什么。

    前言 最近在开发有关高分辨率屏幕的软件,还是做了不少尝试的,当然我们也去网上查了不少资料,但是网上的资料也很零碎,说不明白,这样的话我就做个简单的总结,希望看到这的你可以一次解决你有关不同分辨率下的所 ...

  7. CSPJ赛前刷题

    T1 \(\color{red}\text{正难则反}\),最短路 T2 图论(糅杂着一点DP) T3 DP 优化:减去不需要的状态 T4 一定要写注释!!! 不开longlong见祖宗!!! T5 ...

  8. SQL SERVER 2012的安装

    1.将光盘镜像用虚拟光驱加载(WIN10自带虚拟光驱) 2.双击setup.exe 3.选择"安装"-"全新 SQL Server 独立安装或向现有安装添加功能" ...

  9. 发现XWPFDocument写入Word文档时的小BUG:两天的探索与解决之旅

    引言 最近在使用XWPFDocument生成Word文档时,遇到一个错误:"未将对象引用设置到对象的实例".这个平常很容易找到原因的问题却困扰了我两天,最终发现问题出在设置段落时赋 ...

  10. Scrapy框架(二)--持久化存储

    持久化存储 scrapy的高性能持久化存储操作,有两种方式:基于终端指令的持久化存储 和 基于管道的持久化存储操作. 基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列 ...