测试覆盖率工具:EclEmma
测试覆盖率工具:EclEmma
2016-08-26
目录
1 测试覆盖率实现技术
2 EclEmma介绍
3 EclEmma测试覆盖率指标
4 EclEmma安装
5 示例项目介绍
5.1 创建项目
5.2 用Coverage as TestNG Suite跑用例
5.3 跑后结果
5.4 导出HTML报告
5.5 导入导出合并覆盖率Session
5.6 测试引用的jar包的覆盖率
1 测试覆盖率实现技术
- Instrumentation:代码注入,在产品代码的关键位置插入统计代码,从而获得测试覆盖率数据
- Class Instrumentation: 把统计代码插入编译好的.class文件
- Source Instrumentation:把统计代码插入源代码并编译成新的.class文件
- Custom JVM:在JVM中把统计代码插入.class。测试覆盖率分析可以在JVM执行测试代码的过程中完成
2 EclEmma介绍
- 一个优秀的开源软件测试工具
- eclipse的一个插件
- 能够对由 Java 语言编写的程序进行覆盖测试
- 能够在工作平台中启动
- 直接对代码覆盖进行分析
- 覆盖结果将立即被汇总并在Java源代码编辑器中高亮显示
- 也可程序运行的结果生成详尽的覆盖测试报告
- 可以结合JUnit、TestNG使用
- 工作原理:Class Instrumentation
3 EclEmma测试覆盖率指标
- 行覆盖率: 部分行覆盖:a>b?a:b
- 基本语句块覆盖率: 基本语句块:没有if-else分支的代码区域
- 类覆盖率: 由JVM加载并初始化
- 方法覆盖率: 第一个基本语句块被执行
4 EclEmma安装
- 启动eclipse -> 点击Help菜单 -> Install New Software,在弹出的对话框中,点击Add
- 输入Name,例如EclEmma。输入Location:http://update.eclemma.org/
- 安装后重新启动eclipse,如果成功安装,工具栏上会出现一个新的按钮,如图1所示
图1 EclEmma按钮
5 示例项目介绍
下面通过项目介绍如何在使用了TestNG测试框架的项目中的使用EclEmma测试覆盖率
TestNG请参考: TestNG 入门教程
5.1 创建项目
项目中使用TestNG测试框架,包含被测类'Calculator'和测试类'CalculatorTest'。
图2 测试结构
5.2 用Coverage as TestNG Suite跑用例
图3 Coverage as TestNG Suite
5.3 跑后结果
图5 标注源代码和Coverage视图
5.4 导出HTML报告
- 要导出的session (session:一次测试覆盖率交互活动)
- 选择报告的类型(HTML/XML/Text/EMMA session)
- 存放位置


图7 HTML报告
HTML报告可以逐层展开,点击方法还可以看到代码的覆盖情况。
列名含义:
- missed Instructions代码覆盖率,
- Missed Branches逻辑分支覆盖率,
- Missed Cxty判断执行数,
- missed Lines代码行数,
- Methods方法个数。
5.5 导入导出合并覆盖率Session
既可以导出session,也可以导入session,还可以合并session,这样,可以将多次测试覆盖率的结果进行合并
图8 合并Session
5.6 测试引用的jar包的覆盖率
图9 测试引用的jar包的覆盖率
其他Eclipse覆盖率插件
EclEmma、Clover与Cobertura插件
测试覆盖率工具:EclEmma的更多相关文章
- 测试覆盖率工具EclEmma安装与使用
此文来自于:https://www.cnblogs.com/cnsdhzzl/p/7638883.html EclEmma的简介 一个优秀的开源软件测试工具 eclipse的一个插件 能够对由 Jav ...
- iOS 覆盖率检测原理与增量代码测试覆盖率工具实现
背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现 ...
- JUNIT单元测试时统计代码的覆盖率工具eclemma安装
EclEmma是Eclipse里的一个插件,安装简单,覆盖率显示直观.安装EclEmma.打开Eclipse,点击Help → Software Updates → Find and Install, ...
- 测试覆盖率Emma工具使用
Emma使用与分析 #什么是Emma EMMA 是一个开源.面向 Java 程序测试覆盖率收集和报告工具.它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种 ...
- 白盒测试笔记之:Junit 单元测试以及测试覆盖率
单元测试: 单元测试是从代码层面验证代码的正确性. 一般考虑接口中的数据结构是否正确,变量的临界条件,如空字符串,空集合等. Junit入门 参考: Junit 入门教程: https://ww ...
- Java測试覆盖率工具----Cobertura,EclEmma
Cobertura 是一个与Junit集成的代码覆盖率測量工具 它是免费.开源的 它能够与Ant和Maven集成.也能够通过命令行调用 能够生成HTML或XML格式的报告 能够依照不同的标准对HTML ...
- Jacoco覆盖率工具使用调研
JaCoCo Java Code Coverage Library Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以 ...
- Jacoco覆盖率工具使用
Jacoco介绍 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序.很多第 ...
- jacoco-1-java代码测试覆盖率之本地环境初体验
前言 jacoco是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以插桩到Ant.Maven中,可以使用其JavaAgent技术监控Java程序等. 那么本次主要使用对java ...
随机推荐
- 《Gradle权威指南》--Android Gradle多项目构建
No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle li ...
- python的time模块总结
python的time模块与random模块 目录 time模块 time模块 三种时间表示 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) : 通常来说,时间戳表示的是 ...
- spark加载模型与gRPC与JSF与JDQ冲突
spark与JSF冲突解决方式 <dependency> <groupId>org.apache.spark</groupId> <artifactId> ...
- AGC 019F.Yes or No(思路 组合)
题目链接 \(Description\) 一共有\(n+m\)道判断题,其中有\(n\)个答案为"YES",\(m\)个为"NO".现在以随机顺序给你这\(n+ ...
- 潭州课堂25班:Ph201805201 第六课:散列类型,运算符优先级和逻辑运算 (课堂笔记)
# # 集合:# se1 = { 1,3,4,5,'a'} # 如果直接添加元素,不能直接添加可变元素# se2 = set() # 定义一个空集合# se3 = {'a'} # 定义个单元素的集合# ...
- 潭州课堂25班:Ph201805201 redis第四课 (课堂笔记)
redis支持丰富的数据类型, 是个非关系型数据库.以键值对存储,存在内存里, : string. 字符 list. 列表 set. 集合 zset(sorted set). 有序集合 hash ...
- CocosCreator项目结构
1,通过 Dashboard,我们可以创建一个 Hello World 项目作为开始,创建之后的项目有特定的文件夹结构.[参考来源:官方文档] 2,初次创建并打开一个 Cocos Creator 项目 ...
- unity无限循环报错的定位
晚上遇到了,碰到了程序一运行就卡住的尴尬问题,然后百度下,看了看,Get到了一个新的skill. 1. 打开对应的VS程序,选择“调试/Attach Unity Debuger”菜单来调试代码. 2. ...
- Unity3D MonoBehaviour的生命周期(lifecycle)
官方的事件函数的执行顺序中有详解(Link:Execution Order of Event Functions) (图片来源:http://whatiseeinit.blogspot.com/201 ...
- [web前端] 去哪儿网前端架构师司徒正美:如何挑选适合的前端框架?
原文地址: https://www.jianshu.com/p/6327d4280e3b 最近几年,前端技术迅猛发展,差不多每年都会冒出一款主流的框架. 每次新开业务线或启动新项目时,首先第一件事就是 ...