一、概述

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. 大数据平台搭建手册——hadoop

    从0开始 超详细搭建hadoop平台手册 创建三台使用centos7操作系统的虚拟机 基础环境配置 ps:不建议使用DHCP,因为ip地址会变动 配置ip 1.master [root@master ...

  2. C语言常用数学函数

    目录 C语言常用数学函数(头文件#include "math.h") abs()函数 labs()函数 fabs()函数 floor()函数 floorf() floorl() c ...

  3. (八十八)c#Winform自定义控件-转子

    官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...

  4. redis数据持久化篇

    为什么需要持久化 Redis是个基于内存的数据库. 那服务一旦宕机,内存中的数据将全部丢失. 通常的解决方案是从后端数据库恢复这些数据,但后端数据库有性能瓶颈 如果是大数据量的恢复,1.会对数据库带来 ...

  5. 实时数据同步Inofity、sersync、lsyncd

    数据备份方案 企业网站和应用都得有完全的数据备份方案确保数据不丢失,通常企业有如下的数据备份方案 定时任务定期备份 需要周期性备份的数据可以分两类: 后台程序代码.运维配置文件修改,一般会定时任务执行 ...

  6. C程序函数调用&系统调用

    理解程序的执行 我们要知道CPU可以自由地访问寄存器.内存.另外,程序是由操作系统执行的,所以操作系统能够控制程序的所有执行情况,限制程序的行为. 程序地执行过程: 程序是一个二进制文件,包含程序的代 ...

  7. wpfui:一个开源免费具有现代化设计趋势的WPF控件库

    wpfui介绍 wpfui是一款开源免费(MIT协议)具有现代化设计趋势的WPF界面库.wpfui为wpf的界面开发提供了流畅的体验,提供了一个简单的方法,让使用WPF编写的应用程序跟上现代设计趋势. ...

  8. idea文件的编码设置,解决中文编码不一致问题,对RSA验签及文本比较的测试方法 -Dfile.encoding=UTF-8

    String reqContent = "abcdef中文"; //new String("abcdefee".getBytes()," GBK &q ...

  9. JavaScript:Function:函数(方法)对象

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8">      ...

  10. hdu4135题解 容斥

    Problem Description Given a number N, you are asked to count the number of integers between A and B ...