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 代码覆盖率使用中遇到的一些坑

开发在做单元测试时,通过开发工具的插件很容易得到测试代码覆盖率。当软件部署好之后,我们通过功能测试或接口测试,能否得到代码覆盖率?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系统)的代码覆盖率的更多相关文章

  1. 【转载收藏】使用Jacoco远程统计tomcat服务的代码覆盖率

    在做软件开发的时候经常会遇到做各种测试,这里介绍一种本人遇到的:代码覆盖率测试, 这个测试非常实用,能发现许多无效的模块和代码.强烈推荐!!!!! 网上好多资料都不全,而且没有详细的配置流程 本文将简 ...

  2. Jacoco远程统计代码覆盖率

    Jacoco   什么是Jacoco? Jacoco是一个开源的Java代码覆盖率工具,Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAg ...

  3. 【Tomcat】1.Tomcat在Windows系统的安装和使用

    1.下载与安装 安装Tomcat的[前提条件]是安装好JDK或者JRE(本文略过)Tomcat在Windows系统中可以通过[压缩包]或[安装包]来安装建议使用[安装包]来简化安装步骤登录官网http ...

  4. Tomcat在windows系统中的防火墙设置

    在Win7下安装Tomcat后,其他机器无法访问到Tomcat服务,需要修改防火墙设置. 控制面板->window防火墙->允许程序通过Windows防火墙通信 将Tomcat目录下\bi ...

  5. 【原】用IDEA远程Debug Tomcat服务

    [环境参数] Web容器:Tomcat 8.0 IDE:IDEA 2018.1.5 [具体步骤] 1.配置Tomcat容器参数 编辑$CATALINA_HOME/bin/catalina.sh脚本,加 ...

  6. nginx+tomcat实现Windows系统下的负载均衡搭建的案例

    刚入行没多久就听过‘负载均衡’的大名,到现在因为工作接触的少,所以没什么太多的认识.但自己又对其非常的好奇,所以前两天通过查资料,在自己的笔记本上就搭建了一个超简单的案例(工作中没有时间,晚上到家了条 ...

  7. 使用JMX透过防火墙远程监控tomcat服务

    https://my.oschina.net/mye/blog/64879 http://blog.csdn.net/l1028386804/article/details/51547408 http ...

  8. Jacoco收集单元测试、集成测试和系统功能测试覆盖率

    Jacoco收集单元测试.集成测试和系统功能测试覆盖率 2020-02-27  目录 1 安装版本2 被测系统代码示例3 收集单元测试覆盖率4 收集集成和功能测试覆盖率 代码覆盖率可在单元测试.系统测 ...

  9. tomact在windows系统下安装

    一.下载 下载地址: https://tomcat.apache.org/download-90.cgi 7,8,9的版本都可以下,这里下载最新版本 注意:Binary是编译好的,可以直接使用的版本, ...

随机推荐

  1. 数据库及SQL----常用知识点总结

    数据库也是计算机类笔试面试中不可避免会遇到的考点,尤其是银行和部分传统软件类公司.这里根据整理的资料,对数据库的相关知识也做个总结吧.希望学过数据库但长时间不用的同学根据这些知识能够回忆和重拾,没学过 ...

  2. Springmvc+mybatis的定时器配置文件spring-quartz.xml

    <!-- 定时器配置文件---.xml 一个cron表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左至右,这些元素的定义如下: 1.秒(0–59) 2.分钟(0–59) 3.小时(0– ...

  3. DOM 对象方法

    DOM 对象方法 这里提供一些您将在本教程中学到的常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTagName() 返回包含带有指定 ...

  4. 《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)

    因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内 ...

  5. win10的power shell可以学习少部分linux命令_功能与cmd类似

    更新帮助文件:

  6. [2017-08-09]一则使用WinDbg工具调试iis进程调查内存占用过高的案例

    最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2. 这台服务器上装了SqlServer.TFS(项 ...

  7. Tornado框架简介(二)

    --------------------Application-------------------- 1.settings     1.debug=True:,设置tornado是否工作在调试模式, ...

  8. base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法

    用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...

  9. node.js 89行爬虫爬取智联招聘信息

    写在前面的话, .......写个P,直接上效果图.附上源码地址  github/lonhon ok,正文开始,先列出用到的和require的东西: node.js,这个是必须的 request,然发 ...

  10. new和newInstance区别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp55     在初始化一个类,生成一个实例的时候:newInstance() ...