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会监听服务器端设置()的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

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远程统计代码覆盖率

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

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

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

  3. Tomcat 加入windows 服务自启动设置

    基于J2ee技术开发,可以运行在Tomcat.weblogic.websphere等J2ee应用服务器上,对于一般访问量不是很高的客户我们推荐使用Tomcat(开源免费),一般情况下Tomcat服务需 ...

  4. Windows系统使用putty远程连接DigitalOcean创建的Linux系统(CentOS6.7为例)

    大部分vps提供网站都会在网站上提供一个控制台界面,方便操作远程vps.但是使用起来特别不方便,尤其在一个神奇的国家,打开国外网站都困难,何况还要在网站上不断的操作.这一教程记录如何在Windows系 ...

  5. 启用“关闭自动根证书更新”,解决Windows系统各种卡顿的问题(Visual studio 卡、远程桌面mstsc卡、SVN卡)

    最近,发现在Win7下面一系列操作都会出现卡顿的情况: 1.  Visual studio 启动调试和关闭调试时,都会卡上半分钟左右 2.  使用远程桌面mstsc.exe,点击连接时,也会卡上半分钟 ...

  6. Windows服务器nginx+tomcat服务负载均衡

    一.安装两个tomcat服务自启动 1. 解压两个tomcat,名称为分别1,2 2. 配置环境变量 3. 修改文件server.xml中的三个端口号,使得两个tomcat不冲突 (1)<Ser ...

  7. Windows系统下远程Linux系统

    Windows系统下远程Linux系统 工具:Xmanager 启动界面: 配置保存路径(win7): C:\Users\Administrator\AppData\Roaming\NetSarang ...

  8. Windows平台Tomcat服务搭建

    1. 下载  JDK下载 下载地址 Tomcat下载 下载地址 2. 安装配置  JDK安装配置 安装过程不再赘述. 配置: 环境变量:  JAVA_HOME,变量值为:C:\JDK(具体请根据JDK ...

  9. Linux下tomcat服务

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

随机推荐

  1. bootstrap-全局css样式

    bootstrap-全局css样式   1.bootstrap是一个前端框架 2.基本模板:viewport视口可以解决移动端设备网页自适应问题 3.版心(.container)  流式版心(.con ...

  2. Apriori——python3实现

    最近看了关联算法中的Apriori没看懂,这次看了一些论文总算看懂了,不过还是没能够自己实现.在github搜到一些代码看,看的不很懂,这里先贴上(当中有自己加的注释),有时间再补充研究. # -*- ...

  3. boneCP原理研究

    ** 转载请注明源链接:http://www.cnblogs.com/wingsless/p/6188659.html boneCP是一款关注高性能的数据库连接池产品 github主页 . 不过最近作 ...

  4. Bootstrap系列 -- 12. 水平表单

    Bootstrap框架默认的表单是垂直显示风格,但很多时候我们需要的水平表单风格(标签居左,表单控件居右) 在Bootstrap框架中要实现水平表单效果,必须满足以下两个条件: 1.在<form ...

  5. python2.X和3.X的一些区别【整理中】

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可  以取得很好的优化结果.  Py3.1性能比P ...

  6. vs 2012 设置选中的引用高亮 颜色

    一个简单的小技巧,不用插件也可以做到,vs 2012 设置选中的引用高亮 颜色 .vs 默认的单击引用的变量时,显示的颜色是灰色,基本看不出来,所有特意抽空捣鼓了下 还真让我给找出来 工具==> ...

  7. 详细说明svn分支与合并---命令行

    一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例举几个需要用到svn分支的情况: 1 ...

  8. Jquery Mobile局部刷新后js和css失效,需局部渲染

    $(function () {    $("#submit").click(function(){      var storage = window.localStorage;  ...

  9. laydate JS日期插件

    原文出处 简要介绍 你是时候换一款日期控件了,而layDate非常愿意和您成为工作伙伴.她致力于成为全球最用心的web日期支撑,为国内外所有从事web应用开发的同仁提供力所能及的动力.她基于原生Jav ...

  10. Calendar( 日历)

    本节课重点了解 EasyUI 中 Canlendar(日历)组件的使用方法,这个组件不依赖于其他组件.一. 加载方式//class 加载方式<div id="box" cla ...