sonar jacoco 覆盖率为0_Jacoco统计代码覆盖率
Jacoco,看起来就很好喝的样子。
一、Jacoco简介
1、Jacoco全称JavaCodeCoverage,
是一个开源的,统计JAVA覆盖率的工具。
Python项目是统计不了的
2、Jacoco采用on-the-fly的模式进行插桩,
部署环境时,jacoco会介入class文件的加载,插入探针。
插入成功后,jacoco会新起一个端口来开启tcp服务,同时提供api来连接这个服务,从而dump数据。
二、Jacoco下载
1、官网地址
https://www.jacoco.org/jacoco/index.html,
下载最新的jacoco-0.85.zip
2、解压zip包,得到我们想要的3个jar包。
三、Springboot代码完善
测试代码覆盖率,我们要先准备被测试的springboot代码。
修改上一章的内容,添加一个主函数和controller。
1、新增CalcController.java,
这样可以通过http的方式可以请求calc的方法
package com.tool.controller;import com.tool.Calc;
import com.tool.Impl.CalcImpl;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;@Controller
public class CalcController {@ResponseBody@RequestMapping("/hello")public Map<String,Object> showHelloWorld(){Map<String,Object> map = new HashMap<>();map.put("msg","HelloWorld");return map;}@ResponseBody@RequestMapping(value="/calc/add")public String calcadd(HttpServletRequest request) {int x = Integer.parseInt(request.getParameter("x"));int y = Integer.parseInt(request.getParameter("y"));Calc myc = new CalcImpl();return (myc.add(x,y)+"");}@ResponseBody@RequestMapping(value="/calc/sub")public String calcsub(HttpServletRequest request) {int x = Integer.parseInt(request.getParameter("x"));int y = Integer.parseInt(request.getParameter("y"));Calc myc = new CalcImpl();return (myc.sub(x,y)+"");}@ResponseBody@RequestMapping(value="/calc/abs")public String calcabs(HttpServletRequest request) {int x = Integer.parseInt(request.getParameter("x"));Calc myc = new CalcImpl();return (myc.abs(x)+"");}@ResponseBody@RequestMapping(value="/calc/func")public String calfunc(HttpServletRequest request) {int x = Integer.parseInt(request.getParameter("x"));Calc myc = new CalcImpl();return (myc.func(x)+"");}
}
2、新增主函数
HelloWorldMainApplication.java,
启动webstarter
package com.tool;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/**@SpringBootApplication来标注主程序,说明这是一个springboot应用*/
@SpringBootApplication
public class HelloWorldMainApplication {public static void main(String[] args) {// spring应用启动起来SpringApplication.run(HelloWorldMainApplication.class,args);}
}
3、maven打包test4.jar
这样我们的被测项目就准备好了。
四、Jacoco启动项目
官方提供了3种方案启动项目
(tcpclient方案看不懂、直接pass掉)。
1、第一种方案:文件的方式启动项目
它的好处是关闭服务可以直接生成res.exec,
坏处是必须要关闭服务才能生成。
java -javaagent:jacocoagent.jar=includes=com.*,output=file,destfile=d:/jacoco/filetest/result/res.exec,append=true -jar test4.jar
2、第二种方案:tcp的方式启动项目
它的好处是不用关闭服务,随时可以dump,
这也是最常用的启动方式
java -javaagent:jacocoagent.jar=includes=com.*,output=tcpserver,port=6300,address=localhost,append=true -jar test4.jar
执行dump语句生成res.exec
java -jar jacococli.jar dump --address localhost --port 6300 --destfile d:/jacoco/tcptest/result/tcp.exec
3、参数解释:
- javaagent
jacocoagent.jar包的地址
- includes
对要插桩的包进行过滤,*代表所有的class都要进行插桩。 - output
启动项目的两种方案,file或者tcpserver
- port
jacoco开启的tcpserver的端口,dump的时候也要执行相同端口 - address
jacoco对外开放的tcpserver的访问地址。
地址为127.0.0.1的时候,只能在这台服务器上进行dump
地址为实际ip时,可以在任意一台机器上进行数据的dump - destfile
exec文件的生成目录 - append
默认为true,执行 dump时在原文件末尾进行追加
如果改为false,执行 dump时会直接覆盖原文件
五、解析exec
1、ant解析
安装ant环境,建立build.xml,执行ant dump,再执行ant report。
ant解析的难点是建立build.xml,我尝试了下,成仁了,果断放弃。
请大家自行尝试。
2、开发工具解析
idea点击Analyze——Show CCD
点击+号,选择exec,show selected。
注意每次更新了覆盖率,都要重新点击+号,添加文件。
java -jar jacococli.jar report ./tcp.exec --classfiles D:workspace2springboot-04-testtargetclasses --sourcefiles D:workspace2springboot-04-testsrcmainjava --html report
5、解析出来的完整report:
每一行的覆盖率都会展示:
更多jacoco案例或者python相关知识请关注我的公主号:凡大哥随笔。
sonar jacoco 覆盖率为0_Jacoco统计代码覆盖率相关推荐
- 代码覆盖率以及jacoco统计代码覆盖率的原理
一.什么是代码覆盖率 简单来说,代码覆盖率是指,至少被执行了一次的条目数占整个条目数的百分比. 如果"条目数"是语句,对应的就是代码行覆盖率:如果"条目数"是函 ...
- Android ui 单元测试 覆盖率,Android单元测试/Ui测试+JaCoCo覆盖率统计
Android单元测试/Ui测试+JaCoCo覆盖率统计 参考资料1 参考资料2 背景说明 单元测试 从源代码着手,对源码中的最小可测试单元进行检查和验证,在对源代码有较深的理解下,编写测试单元,工作 ...
- springboot多模块工程单元测试jacoco统计代码覆盖率总结
jacoco统计代码覆盖率的文章一搜一大堆,方法也很简单,就是在pom中引用两个插件: maven-surefire-plugin jacoco-maven-plugin 其中jacoco-maven ...
- 排查jacoco覆盖率对反射问题的影响
最近业务部门开始推行,在全部后台应用中自动开启覆盖率测试.然而,不久后就有业务测试的同学反馈出现问题. 问题的现象如下: 我们的业务通过 HTTP 调用腾讯OSS的服务,结果得到了以上的报错信息.测试 ...
- java jacoco覆盖率报错_接口测试代码覆盖率(jacoco)方案分享
在做接口测试过程中,为了达到量化接口测试用例效果的目的,引入了代码覆盖率作为重要指标,在查阅相关文档和资料通过实践之后,大概得到了一个方案.如图: 备注:该方案略微复杂了一些,原因在于服务JVM所在的 ...
- Jacoco覆盖率工具使用
Jacoco介绍 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序.很多第 ...
- java代码实现单元测试jacoco覆盖率收集生成多模块聚合报告
文章目录 背景 一.准备工作 - 生成exec文件 二.准备工作 - 引入依赖 三.利用jenkins-jacoco插件源码收集覆盖率结果 四.生成jacoco报告文件,聚合多模块 附赠相关知识点 背 ...
- Jacoco覆盖率工具使用(已测试)
笔者踩了很多坑,然后总结以下的研究结果.转载请注明出处,谢谢啦! 1两种方式 1.1 eclipse直接安装插件测试 install new soft 安装插件 eclemma java code c ...
- 基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计
首发于 Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉. "有所了解"指的是在 CI 实践中已经使用 JaCoC ...
最新文章
- python聚类分析如何确定分类个数_Python数据挖掘—聚类—KMeans划分法
- java replaceall删除中括号和内容_「技术文章」《阿里巴巴 Java 开发手册》精华摘要...
- vba发送邮件 签名_如何更改“从Windows 10的邮件发送”签名
- 7.9 规划Varnish缓存
- “今夜酒店特价”的商业模式是什么?www.souapp.com搜应用推荐
- 【福利倒计时】春风十里不如程序猿的专属福利,拿了这份,2018值了~
- 百度、腾讯、滴滴,如何看2019智能网联汽车发展 | 2019互联网岳麓峰会...
- 未雨绸缪:面试前为何要带一份不一定被阅的简历?
- 计算机资料室英语翻译,资料英文怎么说_资料的英文怎么写 - 沪江英语
- 财务分析与决策——利润表
- Windows 10 虚拟桌面切换
- 【C#】 enum 还能这么玩
- python爬斗鱼直播_从零开始写Python爬虫 --- 爬虫应用: 利用斗鱼Api抓取弹幕
- [VB.NET]如何向数据库字段中写入文件?
- Oracle 状告 Google 侵犯专利
- Arduinojson官网反序列化示例教程
- Java 8 辣么大(lambda)表达式不慌之—–(四)示例-Collectors中的中的joining 方法和mapping方法
- c语言 bnf,c语言的bnf总结
- 天下武功,唯快不破 | OptiPlex 7070仅售3339元,戴尔小企业官网秒杀大战等你来参战!...
- python3+OpenCV批处理图片
热门文章
- 解决pip安装报错:is not a supported wheel on this platform
- 2019半年总结:Teams are powerful
- 各种注意力机制PyTorch实现
- CVPR2020:基于层次折叠的跳跃式注意网络点云完成
- Google Pixel 超分辨率--Super Resolution Zoom
- 同向逆向、多车道线检测
- 自动驾驶平台,阵营, 主要传感器与场景联系
- 2021年大数据ELK(五):Elasticsearch中的核心概念
- 2021年大数据Hive(四):Hive查询语法
- Android ViewAnimationUtils (动画) 的使用