使用Cobertura计算代码覆盖率

软件测试过程中需要计算代码覆盖率,使用cobertura过程中对于这个工具的计算结果感到疑惑,于是自己动手实践了一下。

使用到的demo例子来源此博客
博客链接
demo链接

把pom.xml中的注释打开

修改了一下demo的HelloWorld.java与HelloWorldTest.java。

package com.test.jacoco;public class HelloWorld {public HelloWorld() {}public String sayHi() {return "Hello World";}public int minusNum(int a, int b){if (a < b){int c = b - a;System.out.println(c);return c;}else if (a==b) {return 0;}else{return a - b;}}public int addNum(int a, int b) {if (a > b) {int c = 5;System.out.print(c);}else if (a == b){int c = 6;System.out.println(c);}/** word* word*** */else{/** a* b* c** */int c = 7;System.out.println(c);}return a + b;}
}
package com.test.jacoco.test;import junit.framework.Assert;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import com.test.jacoco.HelloWorld;public class HelloWorldTest {@Testpublic void testMethod1() {HelloWorld hw = new HelloWorld();String word = hw.sayHi();assertEquals(word, "Hello World");}@Testpublic void testMethod2() {HelloWorld hw = new HelloWorld();int num = hw.addNum(1, 3);assertEquals(num, 4);}@Testpublic void testMethod3() {HelloWorld hw = new HelloWorld();int num = hw.addNum(1, 1);assertEquals(num, 2);}@Testpublic void testMethod4() {HelloWorld hw = new HelloWorld();int num = hw.addNum(3, 1);assertEquals(num, 4);}@Testpublic void testMethod5() {HelloWorld hw = new HelloWorld();int num = hw.minusNum(3, 1);assertEquals(num, 2);}}

在项目根目录输入

mvn cobertura:cobertura

然后在 ~/target/site/cobertura中打开index.html

整体结果

实际情况

根据这个demo,可以看到Cobertura统计coverage的方法不是直观上的计算行数。实际上是对编译后的class进行插桩。

在Defects4J数据集上,以Lang-1-f为例子,modified class为org.apache.commons.lang3.math.NumberUtils,源代码有1436行,但是Cobertura工具统计出来的结果为373/380。

Cobertura计算覆盖率相关推荐

  1. 用Cobertura 测量测试覆盖率

    Cobertura 是一种开源工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率.除了找出未测试到的代码并发现 bug 外,Cobertura 还可以通 ...

  2. SpringBoot结合Jacoco计算api覆盖率

    这里我主要准备三点内容: SpringBoot发布jar包 命令行运行SpingBoot.jar 通过ant dump Api代码覆盖率 开发环境 Win10 x64 jdk 1.8.0 ant 1. ...

  3. 全数字实时仿真平台SkyEye目标码覆盖率关键技术

    1. 研究背景 1.1零插桩目标码覆盖率统计技术 随着武器装备的复杂度的大幅度增加,运行在装备上的嵌入式系统也越来越复杂,功能迭代越来越多,代码中就可能就会存在部分无用代码,或者在执行过程中无法测试覆 ...

  4. mocha.js 生成覆盖率报告

    最近在捣鼓一个基于Node.JS的东西,语言自然是JavaScript了.但后来发现了CoffeeScript,发现确实简便很多,于是变节到了Coffee阵营. 写了两个小模块,忽然想到要测试.最初找 ...

  5. JaCoCo计算代码覆盖率原理

    官网地址: http://www.eclemma.org/jacoco/ JaCoCo 是一个非常常用的计算代码覆盖率的工具. 达到的效果就是可以分析出在代码启动到某个时间点那些代码是执行过的, 哪些 ...

  6. 【WSN】基于COMPOW协议下的网络连通率和覆盖率附matlab代码

    1 简介 COMPOW (COMMON POWER)协议是一种简单的将功率控制与路由协议相结合的解决方案,其基本思想是:所有的传感器节点使用一致的发射功率,在保证网络连通的前提下将功率最小化.COMP ...

  7. (十五)覆盖率数据采样、交叉覆盖率_覆盖选项

    一.数据采样 当在覆盖点上指定一个变量或表达式时,SystemVerilog便会创建很多的"仓(bin)"来记录每个数值被捕捉到的次数,仓(bin)是衡量功能覆盖率的基本单位. S ...

  8. 如何计算单元测试的覆盖率

    一.概念 单元测试的覆盖率有:语句覆盖率(即行覆盖率).分支覆盖率.条件覆盖率.分支条件覆盖率.路径覆盖率等. 语句覆盖率 所谓语句就是那些非分支.非判断的语句. 计算公式:程序执行到的语句总数 / ...

  9. 覆盖率选项,覆盖率分析

    covergroup选项提供不同的覆盖率选项,来计算覆盖率. 单独列出每个covergroup实例的覆盖率 一个covergroup可能会被多个地方例化使用,默认情况下sv会将所有的实例的覆盖率合并到 ...

最新文章

  1. 惠普z840工作站linux,全模块战神 惠普旗舰级Z840工作站评测
  2. vue.js循环for(列表渲染)详解
  3. 绿建科技加密图纸查看器安装_施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚...
  4. 修改输入框placeholder的默认样式
  5. java对象排序_Java™ 教程(对象排序)
  6. CVPR2019 oral 目标跟踪算法之SiamRPN++
  7. python爬去segementfault上的博客文章
  8. http请求头获取 -python
  9. Ubuntu安装Oracle手册(简单版)
  10. 使用WinSCP上传下载IPAD的文件
  11. 跳板机+谷歌验证码 ssh 自动登录
  12. 使用微软官方工具MediaCreationTool制作Windows10的U盘安装盘
  13. 关于未知的USB设备(设备描述符请求失败)的解决方法。
  14. 单声道,立体声 ,功放驱动喇叭的功率选择,功放的适配(A类,B类。。),怎样测量音量信号--怎样不烧坏喇叭。
  15. 计算机网络双绞线和交叉线的区别,交叉线-什么是交叉线、直通线和双绞线?各有什么区别 – 手机爱问...
  16. 使用富盛Sbo-Addon程序开发框架轻松开发模态单据选择查询功能实例
  17. swift tabbar 自定义+号 底部34导航栏适配
  18. LED发光二极管限流电阻的计算
  19. 无人机,diyDrones,3dr,pixhawk,Chris Anderson, 这几个概念是什么关系?
  20. 地震偏移成像matlab,地震偏移成像基本原理概述.ppt

热门文章

  1. 信号调理(信号调理)
  2. 金蝶K3案例教程仓存管理后台配置
  3. 电梯控制系统的实现(代码简洁优质、易懂)
  4. 图形界面操作系统发展史
  5. ORA-28002: the password will expire within 2 days
  6. 网站限制某些ip访问,仅允许某些ip…
  7. nginx限制ip访问次数
  8. 【midomi】Android下最强音乐搜索工具
  9. [统计学笔记] 统计学计算题选讲(精华)
  10. uni的numberbox怎么用_模拟器最强BIOS篇,如何使用uni-bios