转载自:「发表于 TesterHome 」https://testerhome.com/topics/12141

最近接手的新项目需要使用代码覆盖率进行辅助测试,所以结合之前项目的实践笔记及经验,把Java代码覆盖率相关的知识做了一个回顾和总结。
我们一般都是用jacoco+jenkins进行代码覆盖率的统计和展示。从实践来看,变更代码覆盖率分析更贴合我们日常的使用场景。在版本迭代及回归测试阶段,可以采用黑盒测试+变更覆盖分析(白盒测试)的灰盒测试方法,完善测试场景,减少测试遗漏,保证测试的充分性。

具体的jacoco的配置及jenkins的配置可以参考以下文档:
jenkins+jacoco配置代码覆盖率
Jacoco Code Coverage

附我们项目中使用的build.xml配置:

<?xml version="1.0" ?>
<project name="Example" xmlns:jacoco="antlib:org.jacoco.ant" basedir="." default="rebuild"><!--Jacoco文件路径--><property name="jacocoantPath" value="/home/test/tools/jacoco-0.7.4/lib/jacocoant.jar"/><!--最终生成.exec文件的路径,Jacoco根据这个文件生成最终的报告--><property name="jacocoexecPath" value="/home/test/jenkins/workspace/Example-Coverage/jacoco_ci_report/exec/"/><!--生成覆盖率报告的路径--><property name="reportfolderPath" value="/home/test/jenkins/workspace/Example-Coverage/jacoco_ci_report/report/"/><!--远程tomcat服务的ip--><property name="server_ip" value="10.165.***.**"/><!--jacocoagent服务打开的端口--><property name="server_port" value="8035"/><!--源代码路径--><property name="checkOrderSrcpath" value="/home/test/jenkins/workspace/Example-Coverage/moduleName/src/main/java" /><!--.class文件路径--><property name="checkOrderClasspath" value="/home/test/jenkins/workspace/Example-Coverage/moduleName/target/classes" /><tstamp>  <format property="stime" pattern="yyyy-MM-dd HH-mm-ss" locale="cn"/>  </tstamp> <!--让ant知道去哪儿找Jacoco--><taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"><classpath path="${jacocoantPath}" /></taskdef><!--dump任务: 根据前面配置的ip地址和端口,访问目标tomcat服务,并生成.exec文件。--><target name="dump"><jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}ExampleApiTest${stime}.exec" port="${server_port}" append="true" dump="true"/></target><!--merge指定的.exec文件--><target name="merge_exec"><jacoco:merge destfile="${jacocoexecPath}ExampleApiTest-merge.exec"><fileset dir="${jacocoexecPath}" includes="ExampleApiTest*.exec" /></jacoco:merge></target><!--jacoco任务:根据前面配置的源代码路径和.class文件路径,及merge后生成的.exec文件,生成最终的html覆盖率报告--><target name="report"><delete dir="${reportfolderPath}" /><mkdir dir="${reportfolderPath}" /><jacoco:report><executiondata><file file="${jacocoexecPath}ExampleApiTest-merge.exec" /></executiondata><structure name="JaCoCo Report"><group name="Check Order related">           <classfiles><fileset dir="${checkOrderClasspath}" /></classfiles><sourcefiles encoding="gbk"><fileset dir="${checkOrderSrcpath}" /></sourcefiles></group></structure><html destdir="${reportfolderPath}" encoding="utf-8" />         <_xml destfile="${reportfolderPath}/jacoco_report.xml" encoding="utf-8" /></jacoco:report></target><target name="rebuild" depends="dump,merge_exec,report"></target>
</project>

Java 覆盖率相关实践总结相关推荐

  1. Java 后端开发实践 - 项目模板(16 步)

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  2. java 理论与实践,Java 理论与实践: 正确使用 Volatile 变量

    Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量.这两种机制的提出都是为了实现代码线程的安全性.其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低) ...

  3. Java 理论与实践: 流行的原子——新原子类是 java.util.concurrent 的隐藏精华(转载)...

    简介: 在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待.无锁定的算法.在 java.util.concurrent 中添加原子变量类之后,这种情况发生了变化.请跟随并 ...

  4. 赠书:《Java性能优化实践》,众多业内大佬推荐阅读

    没有捷径可走的 Java 性能优化 多年来,用 Google 搜索 Java performance tuning,出现的三篇最热门文章之一是于 1997 年到 1998 年左右发表的文章,这篇文章在 ...

  5. Java并发编程实战_一线大厂架构师整理:java并发编程实践教程

    并发编程是Java语言的重要特性之一, 在Java平台上提供了许多基本的并发功能来辅助开发多线程应用程序.然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在一种简单而直观的映射关系.因此 ...

  6. java微妙_10个微妙的Java编码最佳实践

    编写和维护jOOQ(Java中内部DSL建模的SQL)时遇到过这些.作为一个内部DSL,jOOQ最大限度的挑战了Java的编译器和泛型,把泛型,可变参数和重载结合在一起,Josh Bloch可能不会推 ...

  7. java并发编程实践(2)线程安全性

    [0]README 0.0)本文部分文字描述转自:"java并发编程实战", 旨在学习"java并发编程实践(2)线程安全性" 的相关知识: 0.1)几个术语( ...

  8. java并发编程实践(1)intro

    [0]README 0.1)本文部分文字描述转自"java并发编程实践",旨在学习"java并发编程实践(1)intro"的相关知识: [3]线程带来的风险 [ ...

  9. Java线程相关的热门面试题

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

最新文章

  1. ITK读图VTK显示
  2. 软件测试学习之 ---------- MySQL的查询(重中之重)
  3. apt-get update : pulic key error
  4. unix和linux命令_在Linux / UNIX中查找命令
  5. 时间序列分析python课程论文_python时间序列分析
  6. 机器学习—XGBoost实战与调参
  7. 威胁情报工具:更快?更聪明?
  8. vue+nodejs+element 实现drawio绘图效果
  9. 科学计算matlab尔雅答案,科学计算与MATLAB语言2019尔雅答案
  10. 采集企业联系方式的10个经典方法
  11. 【NLP】第6章 使用 Transformer 进行机器翻译
  12. java中特殊字符的输出方式_java 特殊符号输出绝对基础?
  13. CMDS目的端数据库碎片整理记录
  14. 开源 android 播放器
  15. 不忘初心牢记使命文化墙励志标语墙贴
  16. Linux与ISCSI
  17. VS2017实用调试技巧
  18. JAVA安全之JAVA服务器安全漫谈
  19. 美国匹斯堡大学计算机专业,匹兹堡大学计算机专业
  20. 用python程序画出一些简单的动漫人物

热门文章

  1. 三分钟了解虚拟化平台到底能做什么?
  2. vue路由跳转传参乱码解决
  3. l bfgs算法java代码_理解L-BFGS算法
  4. 关于 Kubernetes中secret、configmap实操的一些笔记
  5. 聊一聊作为高并发系统基石之一的缓存,会用很简单,用好才是技术活
  6. 【6】ZigZag Conversion
  7. 爱奇艺开源的组件化跨进程通信解决方案
  8. Ceilometer + Gnocchi + Aodh
  9. 第7节 利用win7漏洞绕过系统登录密码
  10. Python解题 - CSDN周赛第40期