Spring Boot 代码覆盖率测试
代码覆盖率测试是规范软件开发流程里一个必不可少的环节。一般都是在PG末尾阶段,伴随着IT自测产生。
↑以上,是自己yy出来的啊,反正我司是这样要求的。不跑覆盖率,鬼知道你在代码里夹杂了一些什么东西。
好了,以下是正题。
安装jacoco和ant
传统的Spring MVC WEB项目,只需要jacoco即可。找到这边文章的朋友应该知道spring是怎么跑覆盖率的,我就不说明了啊。
因Spring Boot本身集成了Tomcat,所以我们这边需要用到ant,ant是干嘛的?自行百度,这里不做说明。
地址如下:
1.jacoco: http://www.eclemma.org/jacoco/
2.ant: https://www.apache.org/dist/ant/binaries/
注:下载ant时请认准binaries里的包而不是source,要是解压后找不到bin文件夹请回到这瞅瞅。
配置ant
在解压后的bin路径下编写build.xml文件,
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" xmlns:jacoco="antlib:org.jacoco.ant" >
<!--Jacoco的安装路径-->
<property name="jacocoantPath" value="D:\jar\jacoco-0.8.1\lib\jacocoant.jar"/>
<!--最终生成.exec文件的路径,Jacoco就是根据这个文件生成最终的报告的-->
<property name="jacocoexecPath" value="D:\jar\jacoco-0.8.1\target\jacoco.exec"/>
<!--生成覆盖率报告的路径-->
<property name="reportfolderPath" value="D:\jar\jacoco-0.8.1\report"/>
<!--远程tomcat服务的ip地址-->
<property name="server_ip" value="127.0.0.1"/>
<!--监听端口号,非项目端口号,和常用的8080是不是很接近,别误会,自行配置就好-->
<property name="server_port" value="8090"/>
<!--源代码路径可以包含多个源代码-->
<property name="webSrcpath" value="D:\springboot\demo\src\main\java" /> <!--.class文件路径可以包含多个-->
<property name="webClasspath" value="D:\springboot\demo\target\classes"/> <!--让ant知道去哪儿找Jacoco-->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoantPath}" />
</taskdef> <!--dump任务:
根据前面配置的ip地址,和端口号,
访问目标tomcat服务,并生成.exec文件。--> <target name="dump">
<jacoco:dump address="${server_ip}" reset="true" destfile="${jacocoexecPath}" port="${server_port}" append="false"/>
</target> <!--jacoco任务:
根据前面配置的源代码路径和.class文件路径,
根据dump后,生成的.exec文件,生成最终的html覆盖率报告。--> <target name="report">
<delete dir="${reportfolderPath}" />
<mkdir dir="${reportfolderPath}" /> <jacoco:report>
<executiondata>
<file file="${jacocoexecPath}" />
</executiondata> <structure name="JaCoCo Report">
<group name="Launch related">
<!--此处配置classes文件地址 -->
<classfiles>
<fileset dir="${webClasspath}" />
</classfiles>
<!--此处配置源码地址-->
<sourcefiles encoding="utf-8">
<fileset dir="${webSrcpath}" />
</sourcefiles>
</group> </structure> <html destdir="${reportfolderPath}" encoding="utf-8" />
</jacoco:report>
</target>
</project>
再强调一遍build.xml中的server_port是后面启动命令参数中的监听端口号,非项目端口号。如果写错会报 Unable to dump coverage data。
启动项目
1.Debug模式
配置VM arguments,步骤:右击项目>Debug As>Debug Configruations...>Arguments
在VM arguments 中添加-javaagent:D:\jar\jacoco-0.8.1\lib\jacocoagent.jar=includes=*,output=tcpserver,port=,address=127.0.0.1
debug启动
2.jar包
mvn clean package生成jar包后,在启动jar包时添加上面的参数就行。
java -javaagent:D:\jar\jacoco-0.8.1\lib\jacocoagent.jar=includes=*,output=tcpserver,port=,address=127.0.0.1 -jar D:\springboot\demo\target\demo.jar
测试
根据自己的测试case,测试就行啦。测完之后,不需要stop项目。在ant所在目录的bin路径下执行ant dump, 如果build success 表示生成了报告数据。
然后再执行ant report,导出数据,在build.xml中指定的路径中生成index.html和jacoco.exec文件
至此,结束。不对之处,还望指正。
Spring Boot 代码覆盖率测试的更多相关文章
- Spring Boot(十二):spring boot如何测试打包部署
Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...
- spring boot应用测试框架介绍
一.spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit.spring test.assertj.hamcres ...
- Spring Boot从入门到放弃-Spring Boot 整合测试
站长资讯摘要:使用Spring Boot 整合测试,对Controller 中某个方法进行测试或者对Service,Mapper等进行测试,不需要运行项目即可查看运行结果是否和期望值相同,Spring ...
- (转)Spring Boot(十二):Spring Boot 如何测试打包部署
http://www.ityouknow.com/springboot/2017/05/09/spring-boot-deploy.html 有很多网友会时不时的问我, Spring Boot 项目如 ...
- Spring Boot(十二):Spring Boot 如何测试打包部署
有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发.调试.打包到最后的投产上线. 开发阶段 ...
- Spring Boot RestApi 测试教程 Mock 的使用
测试 Spring Boot Web 的时候,我们需要用到 MockMvc,即系统伪造一个 mvc 环境.本章主要编写一个基于 RESTful API 正删改查操作的测试用例.本章最终测试用例运行结果 ...
- Spring Boot应用的测试——Mockito
Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...
- Spring Boot中的测试
文章目录 简介 添加maven依赖 Repository测试 Service测试 测试Controller @SpringBootTest的集成测试 Spring Boot中的测试 简介 本篇文章我们 ...
- Spring Boot项目中使用Mockito
本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...
随机推荐
- Elasticsearch PUT 插入数据
{ "error": { "root_cause": [ { "type": "illegal_argument_exceptio ...
- 排序算法Java代码实现(二)—— 冒泡排序
本篇内容: 冒泡排序 冒泡排序 算法思想: 冒泡排序的原理是:从左到右,相邻元素进行比较. 每次比较一轮,就会找到序列中最大的一个或最小的一个.这个数就会从序列的最右边冒出来. 代码实现: /** * ...
- 1、Ext.NET 1.7官方示例笔记-事件
官网参考地址:https://examples1.ext.net/#/Events/DirectEvents/Overview/ 先了解一下“事件” Ext.NET包括3种事件机制 DirectEve ...
- 设计模式之(十)装饰模式(DECORATOR)
在购买了一个房子后,如果是毛坯房,肯定不合适直接入住的.需要对它进行装修:地面找平贴地砖.批墙贴墙纸.吊顶装订以及买需要的家具,住进去以后也可能根据需要再添加或者去掉一些家具或者修改一些东西.所以的这 ...
- 怎么把使用vuepress搭建的博客部署到Github Pages
推荐在这里阅读效果更佳 背景 网上搜了很多教程,包括官网的教程,但是还是费了一番功夫, 如果你使用自动化部署脚本部署不成功的话,可以参考我的这个笨方法 这是部署后的效果 前提 我假设你本地运行OK, ...
- 浅谈 Web框架
一.Web框架本质 所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端 二.Web框架功能 socket收发消息 —— wsgiref(测试).uwsgi(线上 ...
- 「白帽挖洞技能」YxCMS 1.4.7 漏洞分析
这几天有小伙伴留言给我们,想看一些关于后台的漏洞分析,今天i春秋选择YxCMS 1.4.7版本,理论内容结合实际案例进行深度分析,帮助大家提升挖洞技能. 注:篇幅较长,阅读用时约7分钟. YXcms是 ...
- vue学习指南:第十篇(详细) - Vue的 动画
Vue 提供了一些不同的过度效果,主要根 v-if v-show 动态组件 1. Vue给动画分了6个过程,在css中,扮演6个类, 1. .v-enter定义动画的开始状态 2. .v-ente ...
- [b0016] python 归纳 (二)_静态方法和类方法
# -*- coding: UTF-8 -*- """ 测试 类的静态方法,类方法 @staticmethod @classmethod 总结: 1. self 指向类对 ...
- shell脚本按当前日期输出日志
shell脚本基本技能是设置变量,输出信息.如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash t ...