jacoco生成覆盖率报告
操作步骤:
1、下载git上最新的代码到本地
git clone {代码地址}
2、在服务器上打出相关服务的jar包
1) 登上服务器,切换到目标服务所在路径:
cd /xx/xx/xx/xx
2)meven打包:
mvn clear package
3) 打包成功后,当前服务目录下ls查看会有一个target文件夹;
4)cd切换到target目录下,有一个目标服务相关的jar包已经打好;
3、agent模式
1)本地下载jacoco安装包,下载地址:https://www.eclemma.org/jacoco/
2)从jacoco包的lib文件夹中拿到jacocoagent.jar包,上传到测试服务器(xshell上传测试服务器命令:rz);
3) 用agent方式启动服务(服务器上运行):
*** 在目标服务jar包的目录下运行下面命令:
java -javaagent:{jacocoagent.jar在服务器上的地址}=dumponexit=true,destfile={report1.exec文件在服务器上存放的地址} -jar {xxxx(目标服务打出的jar包).jar}
4)服务启动后,执行测试用例,所有的用例执行完成后,停止服务,停止后在对应的目录可获得exec文件;
4、exec文件
1)从服务器上下载exec文件到本地(xshell从服务器下载文件到本地:sz 文件名)
2)用IDEA打开git上下载下来的源码;
3) 点击IDEA中Analyze中的Show Code Coverage Data,打开.exec文件,可以看到coverage结果;
5、生成报告
1)本地安装ant (http://ant.apache.org/),配置环境变量;
2)本地新建build.xml文件;
3)修改xml文件中的一些路径信息;
【build.xml】
<?xml version="1.0" encoding="UTF-8"?>
<project name="Jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
<!--Jacoco 的安装路径-->
<property name="jacocoantPath" value="{xxxxxxxxxx}"/>
<!--最终生成 .exec 文件的路径,Jacoco 就是根据这个文件生成最终的报告的-->
<property name="jacocoexecPath" value="{xxxxxxxxxxx}"/>
<!--生成覆盖率报告的路径-->
<property name="reportfolderPath" value="{xxxxxxxxxxxxxx}"/>
<!--源代码路径-->
<property name="checkOrderSrcPath" value="{xxxxxxxxxxxxxxxxx}" />
<!--.class 文件路径-->
<property name="checkOrderClasspath" value="{xxxxxxx\target\classes}" />
<!--让 ant 知道去哪儿找 Jacoco-->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoantPath}" />
</taskdef>
<!--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="Check Order related">
<classfiles>
<fileset dir="${checkOrderClasspath}">
<!-- 过滤不必要的文件 -->
<exclude name="**/R.class"/>
<exclude name="**/R$*.class"/>
<exclude name="**/*$ViewInjector*.*"/>
<exclude name="**/BuildConfig.*"/>
<exclude name="**/Manifest*.*"/>
</fileset>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${checkOrderSrcPath}" />
</sourcefiles>
</group>
</structure>
<html destdir="${reportfolderPath}" encoding="UTF-8" />
<csv destfile="${reportfolderPath}/coverage-report.csv" encoding="UTF-8"/>
<xml destfile="${reportfolderPath}/coverage-report.xml" encoding="UTF-8"/>
</jacoco:report>
</target>
</project>
4) dos命令切换到build.xml文件所在的地址,执行:
ant report -buildfile build.xml
5) 生成的报告在xml文件配置的报告路径中:

jacoco生成覆盖率报告的更多相关文章
- maven单测生成覆盖率报告---Jacoco的使用
JaCoCo介绍 一.JaCoCo简述 JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其Java ...
- jacoco生成覆盖率
要统计自动化的覆盖率,所以临时看了下jacoco,记录下过程.后续用的时候方便查看. 1.build.gradle中修改 apply plugin: 'jacoco' android { buildT ...
- jacoco 生成单测覆盖率报告
一.jacoco 简介 jacoco 是一个开源的覆盖率工具,它针对的开发语言是 java.其使用方法很灵活,可以嵌入到 ant.maven 中:可以作为 Eclipse 插件:可以作为 javaAg ...
- Sonar在ant工程中读取单元测试和覆盖率报告
虽然sonar支持ant工程的构建,但目前最大的不足是无法在分析过程中产生单元测试和覆盖率报告,这样在sonar面板上覆盖率板块就始终没有数据.但幸运的是,sonar可以读取已经生成好的报告,让报告的 ...
- Jenkins无法读取覆盖率报告的解决方法
报错信息如下: log 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 coverage-report: [mkdir] Cre ...
- [转载]Matlab生成Word报告
最近在进行一批来料的检验测试,一个个手动填写报告存图片太慢了,就有了种想要使用Matlab在分析完后数据可以自动生成PDF报告的想法,于是就去网上搜索了相关的资料,发现Matlab中文论坛上有xiez ...
- ORACLE AWR概述及生成AWR报告
1.Overview of the Automatic Workload Repository The Automatic Workload Repository (AWR) collects, pr ...
- 生成awr报告
主要参考文献: http://343766868.blog.163.com/blog/static/48314056201110124513396/ 概况 Oracle内部以一定的频率把系统关键的统计 ...
- 自动生成AWR报告
--自动生成AWR报告 -------------------2013/09/23 脚本代码: #!/bin/bash AWR_FORMAT=html NUM_DAYS=1 MAX_S ...
随机推荐
- VS发布到IIS Express外网Debug(如微信开发)
主要效果是本机调试网站,将网站发布到某域名(如m16758r728.iok.la),可以进入VS断点,不必再用远程调试!!! 环境 VS2015windows 10操作系统花生壳(可以用其他内网穿透的 ...
- Post ,Get 请求
http://blog.csdn.net/pan_junbiao/article/details/9155497
- WPF中画蚂蚁线的实现
这是一个比较偏的功能,看了其他的很多博客都没有介绍,最后看自己试出来了. 先上效果图 <Path Data="M 100,240 C 510,300 80,100 300,160 H4 ...
- Linux学习之“vfork函数”
为什么使用vfork()? 希望父子进程执行不同的代码.例如: 网络服务程序中,父进程等待客户端的服务请求,当请求达到时,父进程调用fork,使子进程处理该次请求,而父进程继续等待下一个服务请求到达. ...
- iOS UITableView动态隐藏或显示Item
通过改变要隐藏的item的高度实现隐藏和显示item 1.创建UITableView #import "ViewController.h" @interface ViewContr ...
- UWP项目生成错误: 未能使用“CompileXaml”任务的输入参数初始化该任务。“CompileXaml”任务不支持“PlatformXmlDir”参数。请确认该参数存在于此任务中,并且是可设置的公共实例属性。
UWP项目生成错误: 未能使用“CompileXaml”任务的输入参数初始化该任务.“CompileXaml”任务不支持“PlatformXmlDir”参数.请确认该参数存在于此任务中,并且是可设置的 ...
- UWP实现时钟
UWP现在的开发确实很方便,不过资料真的好少啊... 前些天看到同学有实实现自定义的时钟,这东东挺简单的,就自己也写个,没成想,遇到个坑,费了好长时间,记下来一下. 效果图: 画个圆,三条线就好.XA ...
- [转]Android 如何有效的解决内存泄漏的问题
Android 如何有效的解决内存泄漏的问题 前言:最近在研究Handler的知识,其中涉及到一个问题,如何避免Handler带来的内存溢出问题.在网上找了很多资料,有很多都是互相抄的,没有实际的 ...
- 利用docker在window7下安装TensorFlow
安装过程下碰了不少坑,记录一下安装过程,方便以后有需要时复用. 1.安装docker 下载最新版本的docker并且默认安装即可,安装后打开Docker Quickstart Terminal,初次进 ...
- 类成员函数指针的特殊之处(成员函数指针不是指针,内含一个结构体,需要存储更多的信息才能知道自己是否virtual函数)
下面讨论的都是类的非静态成员函数. 类成员函数指针的声明及调用: 1 2 3 4 5 6 7 //pr是指向Base类里的非静态成员函数的指针 //其行参为(int, int),返回值为void vo ...