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创建单元测试:生成测试数据初始化数据库用于测试 ...
随机推荐
- Immediate Window
name="ZFF""ZFF"date=new DateTime(2017,02,03,21,19,45){2/3/2017 21:19:45 PM} Date ...
- Fiddler使用简单
一,fiddler简介 1.1,什么是fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler ...
- Linux管道及重定向
Linux管道及重定向 对shell有一定了解的人都知道,管道和重定向是 Linux 中非常实用的 IPC 机制.在shell中,我们通常使用符合'|'来表示管道,符号'>'和'<'表示重 ...
- 如何在linux CentOS 上安装chrome 谷歌浏览器?
获得linux命令的root权限:http://blog.csdn.net/mddy2001/article/details/76521101. 更改密码在终端中输入:sudo passwd root ...
- Oracle 11g R2 Sample Schemas 安装
最近准备对之前学习SQL*Loader的笔记进行整理,希望通过官方文档中的示例学习(Case Studies)来进行,但是官方文档中示例学习相关的脚本文件在数据库软件安装完成之后默认并没有提供,而是整 ...
- 2.2 Scala基础知识
一.基本数据类型和变量 1.基本数据类型 java中每一个数据类型都是一个类: scala没有自己定义String类型,String类型是从java.lang.String照搬的. 字面量(liter ...
- nullptr与NULL
NULL NULL can be defined as any null pointer constant. Thus existing code can retain definitions of ...
- SpringBoot使用@Value来获取properties的值
今天在项目中想使用@Value来获取Springboot中properties中属性值.场景:定义了一个工具类,想要获取一些配置参数,使用了@value来获取,但是死活也获取不到.如何解决:在使用这个 ...
- win10 配置 hadoop-2.7.2
win10 配置 hadoop-2.7.2 1.下载 先在 http://acrchive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7. ...
- POJ3630-Phone List-(字典树)
一直没有学字典树,听起来很唬人,闲来无事找一道入门题做做. 字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以 ...