jacoco统计自动化测试代码覆盖率
一.下载jacoco, ant工具
jacoco: http://www.eclemma.org/jacoco/;
ant: http://ant.apache.org 并添加到环境变量;
二.不停jvm, dump出覆盖率数据
在部署的tomcat服务中,/bin/catalina.sh中JAVA_OPTS参数值添加:
-javaagent:/data1/jacoco/lib/jacocoagent.jar=includes=*,output=tcpser
ver,port=2014,address=10.210.230.26
其中:/data1/jacoco/lib/jacocoagent.jar为安装jacoco的jacocoagent.jar包绝对路径;output覆盖率数据输出的形式,有file, tcpserver, tcpclient, 默认是file,file是在jvm停掉时才将覆盖率数据dump出来;address和port可以提供client访问,并dump出覆盖率数据文件, 在build.xml会使用。
启动tomcat服务,sh /bin/startup.sh; 假设tomcat服务为10.210.230.26:8074
三.使用自动化测试跑该tomcat服务
四.ant的build.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <project name="testCodeCoveage" xmlns:jacoco="antlib:org.jacoco.ant" default="report">
- <property name="result.dir" location="/data1/hugang/tomcat/apache-tomcat-8.0.36/webapps/ROOT/WEB-INF" />
- <property name="result.classes.dir" location="${result.dir}/classes" />
- <property name="result.report.dir" location="/data1/hugang/jacocoresult/" />
- <property name="result.exec.file" location="./remote.exec" />
- <property name="resource.code" location="/data1/hugang/jacoco/sourcecode/apiservice-java-strategyapi/src/main/java/" />
- <!-- Import JaCoCo Ant tasks, taskdef第三方target -->
- <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
- <classpath path="/data1/hugang/jacoco/lib/jacocoant.jar" />
- </taskdef>
- <!--tomcat下bin/catalina.sh在JAVA_OPTS参数新加的
- -javaagent:/data1/jacoco/lib/jacocoagent.jar=includes=*,output=tcpser
- ver,port=2014,address=10.210.230.26会在这个端口上提供client访问,并能dump出此时的覆盖率数据文件:destfile-->
- <target name="dump">
- <jacoco:dump address="10.210.230.26" reset="false" destfile="${result.exec.file}" port="2014" append="false"/>
- </target>
- <target name="report" depends="dump">
- <!-- Create coverage report -->
- <jacoco:report>
- <!-- This task needs the collected execution data and ... -->
- <executiondata>
- <file file="${result.exec.file}" />
- </executiondata>
- <!-- the class files and optional source files ... -->
- <structure name="apiservice-java-strategyapi">
- <group name="strategy">
- <classfiles>
- <fileset dir="${result.classes.dir}"/>
- <!-- 可以指定jar包 -->
- <!-- include name="*.jar" -->
- </classfiles>
- <sourcefiles encoding="UTF-8">
- <fileset dir="${resource.code}"/>
- </sourcefiles>
- </group>
- </structure>
- <!-- to produce reports in different formats. -->
- <html destdir="${result.report.dir}" />
- </jacoco:report>
- </target>
- </project>
执行: ant -v
最后在 destdir路径下 /data1/hugang/jacocoresult/
生成html报告
五.展示报告
将报告文件,放到apache服务器下,直接访问html,如下:
参考:http://www.eclemma.org/jacoco/trunk/doc/ant.html
jacoco统计自动化测试代码覆盖率的更多相关文章
- jacoco统计自动化代码覆盖率
jacoco统计自动化代码覆盖率 1. 简介 1.1. 什么是Jacoco Jacoco是一个开源的代码覆盖率工具,可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以 ...
- 使用JaCoCo统计单元测试代码覆盖率
1 JaCoCo介绍 JaCoCo是EclEmma团队基于多年覆盖率库使用经验总结而研发的一个开源的Java代码覆盖率库. 2 JaCoCo覆盖率计数器 JaCoCo 包含了多种尺度的覆盖率计数器(C ...
- pipeline结合jacoco获取自动化测试代码覆盖率
1下载jacoco,并上传至服务器:https://www.eclemma.org/jacoco/ 2.应用服务tomcat的catalina.sh增加jacocoagent #JAVA_OPTS=& ...
- ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
1.安装ant 环境,https://ant.apache.org/bindownload.cgi 2.下载jacoco包 https://www.eclemma.org/jacoco/ ,解压后, ...
- Jacoco统计web接口/功能测试的代码覆盖率【转】
原文:https://www.jianshu.com/p/d2fd02d4164b 一.代码覆盖率 通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用 ...
- 利用JaCoCo统计接口测试中代码覆盖率
做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求.这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆 ...
- 使用Jacoco统计服务端代码覆盖情况实践
一.背景 随着需求的迭代,需求增加的同时,有可能会伴随着一些功能的下线.如果不对系统已经不用的代码进行梳理并删除不需要的代码,那么就会增加系统维护成本以及理解成本.但经历比较长的迭代以及系统交接,可能 ...
- jacoco统计Android手工测试覆盖率并自动上报服务器
改进了几个点 1. 不用借助Instrumentation启动,正常启动即可: 2. 测试代码不用push到主分支,主分支代码拉到本地后用git apply patch方式合并覆盖率代码: 3. 测试 ...
- maven项目使用jacoco插件检测代码覆盖率详细配置
使用maven构建项目(java项目或者web项目都可以) jacoco插件的配置参考官方网址:http://www.eclemma.org/jacoco/trunk/doc/maven.html ( ...
随机推荐
- luoguP5105 不强制在线的动态快速排序 [官方?]题解 线段树 / set
不强制在线的动态快速排序 题解 算法一 按照题意模拟 维护一个数组,每次直接往数组后面依次添加\([l, r]\) 每次查询时,暴力地\(sort\)查询即可 复杂度\(O(10^9 * q)\),期 ...
- hdu 2962 最短路+二分
题意:最短路上有一条高度限制,给起点和最大高度,求满足高度最大情况下,最短路的距离 不明白为什么枚举所有高度就不对 #include<cstdio> #include<cstring ...
- 【Go入门教程6】struct类型(struct的匿名字段)
struct Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器.例如,我们可以创建一个自定义类型person代表一个人的实体.这个实体拥有属性:姓名和年龄.这样 ...
- PHP自学之路---雇员管理系统(1)
前面已经介绍了Zend studio工具的使用以及软件开发的基本阶段,下面就是我们第一个练习,雇员管理系统,从设计到实现来简单介绍下: 开发环境: 服务器:基于Linux 2.618环境下配置PHP服 ...
- HDOJ 4876 ZCC loves cards
枚举组合,在不考虑连续的情况下推断能否够覆盖L...R,对随机数据是一个非常大的减枝. 通过检測的暴力计算一遍 ZCC loves cards Time Limit: 4000/2000 MS (Ja ...
- Microsoft Composition (MEF 2)
This packages provides a version of the Managed Extensibility Framework (MEF) that is lightweight an ...
- perf 移植
perf 移植 perf工具用于系统性能的调优,程序优化.源码在kenel/tools/perf目录. 我在imx6平台上进行移植.将自己的移植过程记录如下. 参考链接 http://blog.csd ...
- MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期
MVC控制器中,经常使用Newtonsoft.Json把对象序列化成json字符串传递到前端视图.当对象中有DateTime类型的属性时,前后台如何处理才能把DateTime类型转换成想要的格式呢? ...
- 【springboot+easypoi】一行代码搞定excel导入导出
原文:https://www.jianshu.com/p/5d67fb720ece 开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事 ...
- iOS开源控件库收集
下拉刷新 将数据保存至keyRing 简单的模板引擎,用来生成html OmniGroup 这个其实不是类库,是一个Cocoa的Recipe CocoaPods 为XCode project提供一个类 ...