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. Vim入门基础

    公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...

  2. 8.2.1 UML, 组合和聚合、关联和依赖

    类A的属性是另一个类B,那么这两个类是关联的,但不一定是聚合,如果在A类中创建了B类的实例(使用new!),那么B类和A类就是聚合关系,但不一定是组合关系,因为不一定在A类创建的同时去创建B类的实例, ...

  3. nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存

    一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...

  4. Java中面向字符的输入流

    Java中面向字符的输入流 2016-12-04 Java程序员联盟 Java程序员联盟 Java程序员联盟 微信号 javalm 功能介绍 莫道君行早,更有早行人 全心敲代码,天道自酬勤 字符流是针 ...

  5. 接口测试 mock server 工具moco学习笔记

    看过乙醇分享的接口测试,自己练习了moco,这里呢,吧一些练习的笔记坐下记录,方便自己查阅. 开源地址https://github.com/dreamhead/moco  ,  到QuickStart ...

  6. Socket套接字

    socket编程,熟悉吧,那到底什么是socket呢?: 我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,来供应用 ...

  7. Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ...

  8. Bootstrap-table使用记录(转)

    HTML代码 /*index.cshtml*/ @section styles{ <style> .main { margin-top:20px; } .modal-body .form- ...

  9. 如何实现一个 Virtual DOM 及源码分析

    如何实现一个 Virtual DOM 及源码分析 Virtual DOM算法 web页面有一个对应的DOM树,在传统开发页面时,每次页面需要被更新时,都需要手动操作DOM来进行更新,但是我们知道DOM ...

  10. UTF-8笔记170330

    unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的 UTF-8使用可变长度字节来储存 Unicode字符,例如ASCII字母继续使用1字节储 ...