Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率
Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率
2017-09-21
目录
1 Jacoco的安装和设置
1.1 什么是Jacoco?
1.2 Jacoco安装
1.3 Tomcat配置
2 在客户端进行功能测试或接口测试
3 Ant安装与配置
3.1 安装
3.2 配置build.xml
4 生成代码覆盖率报告
5 查看结果
开发在做单元测试时,通过开发工具的插件很容易得到测试代码覆盖率。当软件部署好之后,我们通过功能测试或接口测试,能否得到代码覆盖率?Jacoco可以通过JavaAgent技术监控Java程序的到代码覆盖率。
此文介绍java Agent的'tcpserver' output方法,用此方法时,JavaAgent会监听服务器端设置(Tomcat配置)的TCP port,然后把收集到的信息(jacoco.exec)写入TCP connection。然后通过jacocoant在客户端把收集的信息(jacoco.exec)从TCP connection拉取到客户端,再根据收集到信息(jacoco.exec)和源代码生成覆盖率report。
1 Jacoco的安装和设置
1.1 什么是Jacoco?
Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等。
1.2 Jacoco安装
官网地址:http://www.eclemma.org/jacoco/ (这里下载了jacoco-0.7.4.201502262128.zip版本)
下载后加压到目录:D:\CodeCoverage\jacoco
1.3 Tomcat配置
1 关闭Tomcat:双击安装目录下的 D:\tomcat\bin\shutdown.bat (window是bat扩展名、Linux是sh扩展名)
2 修改D:\tomcat\bin\catalina.bat,在第一行添加如下脚本:
set JAVA_OPTS=-javaagent:D:\CodeCoverage\jacoco\lib\jacocoagent.jar=includes=*,output=tcpserver,address=172.31.1.32,port=6300,append=true
JVM option 格式:-javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]
官方文档:http://www.eclemma.org/jacoco/trunk/doc/agent.html
或者:启动的时候加上javaagent参数
java -javaagent:/opt/quality/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=*,append=true -jar /app/bin/start.jar
3 启动Tomcat:双击安装目录下的 D:\tomcat\bin\startup.bat
4 验证JAVA_OPTS是否有修改正确
使用WMIC命令
vmic
process where name="java.exe"
若显示一下内容,表示修改成功
java.exe "D:\Java\jdk1.8.0_91\bin\java.exe" -javaagent:D:\CodeCoverage\jacoco\lib\jacocoagent.jar=includes=*,output=tcpserver,address=172.31.1.32,port=6300,append=true

图1 process WMIC
2 在客户端进行功能测试或接口测试
1 测试对象:SpringMVC HelloWorld实例开发及部署
2 功能测试:输入url:http://localhost:8080/HelloSpringMVC/saveResult
说明:在功能测试过程中javaagent会收集覆盖到的代码信息
3 Ant安装与配置
3.1 安装
1 官方网址: http://ant.apache.org -> download -> binary distribute apache-ant-1.9.9-bin.zip
解压到:D:\CodeCoverage\ant
2 验证安装是否成功
在安装目录D:\CodeCoverage\ant\bin下执行命令:ant -version
3.2 配置build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="plate_id_sample_service" xmlns:jacoco="antlib:org.jacoco.ant">
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="D:\CodeCoverage\jacoco\lib\jacocoant.jar"/>
</taskdef> <target name="dump">
<!-- address和port和catalina.bat设置保持一致,destfile设置jacoco.exec保存地址 -->
<jacoco:dump address="172.31.1.32" reset="true" port="6300" destfile="D:\CodeCoverage\jacoco\jacoco.exec"/>
</target> <target name="report">
<jacoco:report>
<executiondata>
<file file="D:\CodeCoverage\jacoco\jacoco.exec"/>
</executiondata> <structure name="Example Project">
<!-- 可以按软件功能模块设置多个group,方便在report中查看 -->
<group name="SpringMVC">
<classfiles>
<!--.class文件路径,可以放在客户端-->
<fileset dir="D:\CodeCoverage\project\HelloSpringMVC\classes"/>
</classfiles>
<sourcefiles encoding="gbk">
<!--源代码路径,可以放在客户端-->
<fileset dir="D:\CodeCoverage\project\HelloSpringMVC\java" />
</sourcefiles>
</group>
</structure> <!-- report文件保存地址 -->
<html destdir="D:\CodeCoverage\jacoco\report"/> </jacoco:report>
</target>
</project>
4 生成代码覆盖率报告
在ant安装目录运行ant dump命令,把jacoco.exec拉取到build.xml设置的客户端路径
在ant安装目录运行ant report命令,根据build.xml设置jacoco.exec、class和java文件地址生成report

图2 ant命令
5 查看结果
若build.xml没有设置源代码java的地址,就看不到代码内容的覆盖情况,最细只能看到方法的覆盖率统计

图3 覆盖率报表
Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率的更多相关文章
- 【转载收藏】使用Jacoco远程统计tomcat服务的代码覆盖率
在做软件开发的时候经常会遇到做各种测试,这里介绍一种本人遇到的:代码覆盖率测试, 这个测试非常实用,能发现许多无效的模块和代码.强烈推荐!!!!! 网上好多资料都不全,而且没有详细的配置流程 本文将简 ...
- Jacoco远程统计代码覆盖率
Jacoco 什么是Jacoco? Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAg ...
- 【Tomcat】1.Tomcat在Windows系统的安装和使用
1.下载与安装 安装Tomcat的[前提条件]是安装好JDK或者JRE(本文略过)Tomcat在Windows系统中可以通过[压缩包]或[安装包]来安装建议使用[安装包]来简化安装步骤登录官网http ...
- Tomcat在windows系统中的防火墙设置
在Win7下安装Tomcat后,其他机器无法访问到Tomcat服务,需要修改防火墙设置. 控制面板->window防火墙->允许程序通过Windows防火墙通信 将Tomcat目录下\bi ...
- 【原】用IDEA远程Debug Tomcat服务
[环境参数] Web容器:Tomcat 8.0 IDE:IDEA 2018.1.5 [具体步骤] 1.配置Tomcat容器参数 编辑$CATALINA_HOME/bin/catalina.sh脚本,加 ...
- nginx+tomcat实现Windows系统下的负载均衡搭建的案例
刚入行没多久就听过‘负载均衡’的大名,到现在因为工作接触的少,所以没什么太多的认识.但自己又对其非常的好奇,所以前两天通过查资料,在自己的笔记本上就搭建了一个超简单的案例(工作中没有时间,晚上到家了条 ...
- 使用JMX透过防火墙远程监控tomcat服务
https://my.oschina.net/mye/blog/64879 http://blog.csdn.net/l1028386804/article/details/51547408 http ...
- Jacoco收集单元测试、集成测试和系统功能测试覆盖率
Jacoco收集单元测试.集成测试和系统功能测试覆盖率 2020-02-27 目录 1 安装版本2 被测系统代码示例3 收集单元测试覆盖率4 收集集成和功能测试覆盖率 代码覆盖率可在单元测试.系统测 ...
- tomact在windows系统下安装
一.下载 下载地址: https://tomcat.apache.org/download-90.cgi 7,8,9的版本都可以下,这里下载最新版本 注意:Binary是编译好的,可以直接使用的版本, ...
随机推荐
- Vim入门基础
公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...
- 8.2.1 UML, 组合和聚合、关联和依赖
类A的属性是另一个类B,那么这两个类是关联的,但不一定是聚合,如果在A类中创建了B类的实例(使用new!),那么B类和A类就是聚合关系,但不一定是组合关系,因为不一定在A类创建的同时去创建B类的实例, ...
- nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存
一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...
- Java中面向字符的输入流
Java中面向字符的输入流 2016-12-04 Java程序员联盟 Java程序员联盟 Java程序员联盟 微信号 javalm 功能介绍 莫道君行早,更有早行人 全心敲代码,天道自酬勤 字符流是针 ...
- 接口测试 mock server 工具moco学习笔记
看过乙醇分享的接口测试,自己练习了moco,这里呢,吧一些练习的笔记坐下记录,方便自己查阅. 开源地址https://github.com/dreamhead/moco , 到QuickStart ...
- Socket套接字
socket编程,熟悉吧,那到底什么是socket呢?: 我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,来供应用 ...
- Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结
本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ...
- Bootstrap-table使用记录(转)
HTML代码 /*index.cshtml*/ @section styles{ <style> .main { margin-top:20px; } .modal-body .form- ...
- 如何实现一个 Virtual DOM 及源码分析
如何实现一个 Virtual DOM 及源码分析 Virtual DOM算法 web页面有一个对应的DOM树,在传统开发页面时,每次页面需要被更新时,都需要手动操作DOM来进行更新,但是我们知道DOM ...
- UTF-8笔记170330
unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的 UTF-8使用可变长度字节来储存 Unicode字符,例如ASCII字母继续使用1字节储 ...