经验总结:首先要把cobertura.jar包含ant的classpath路径中,其次要求它包含在测试用例的classpath中;

使用cobertura做代码覆盖率测试中出现的问题:覆盖率始终为0,不论是否有可用的测试用例都如此;

解决问题的历程:

第一步:在被测工程中增加了一个很简单的方法,在测试工程中增加了一个对前述方法的测试,发现覆盖度仍为0,由此确定是使用cobertura的方法有问题,而不是测试用例覆盖度确实为0;

第二步:分离了cobertura中进行junit测试报告(以下简称为cob-junit)与cobertura测试报告(之前是放在一个文件夹里,难以区分哪些是junit的报告,哪些是cobertura的报告,后来放在了两个不同的文件夹中);

第三步:分离后发现:cob-junit的测试报告与纯junit测试报告显示的测试数不同,纯junit的测试用例数正确,cob-junit测试用例数总为1,且运行错误(error),说明测试用例未能启动;检查错误原因:提示“java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/HasBeenInstrumented”;

第四步:尝试解决上述错误。google后发现引起这个错误的原因是没有把cobertura.jar包含在测试用例的classpath中,也就是测试工程的ivy.xml文件的依赖条目里没有cobertura的jar包,将它加入到ivy.xml的依赖条目中后,解决了覆盖度始终为0的问题;

经验总结:

  1. 对于自己不熟悉的技术,不要走捷径,如把cob-junit与cobertura测试报告放在一个文件夹里;

  2. 出错后要仔细阅读错误报告,寻找能够代表这个错误的关键词句,如“java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/HasBeenInstrumented”;

  3. 如果通过错误报告自己不能解决,使用搜索引擎查找前一步中的关键词句,寻找解决问题的可能经验;

  4. 如果暂时找不到能解决问题的经验,则按照软件(这里是cobertura)的Tutorial(一般来自官网)构建一个最简单的原型,并使其正常工作,然后不断向自己的问题靠拢,在不断修改原型的过程中对可能出错的方面进行筛选,最终锁定出错的位置;

实践中面对一些古怪的错误,往往要重复、交叉进行很多次第3步和第4步,才能最终解决问题。

使用Cobertura做代码覆盖率测试的更多相关文章

  1. 使用Cobertura统计JUnit测试覆盖率

    这是一个JavaProject,关于Cobertura的用法详见代码注释 首先是应用代码(即被测试的代码) package com.jadyer.service; public class Calcu ...

  2. xcode进行代码覆盖率测试

    去年写的文章,搬到cnblog 本文所述的方法只对xcode5做过测试,xcode6是否可行尚未可知. 配置编译选项 首先请参考苹果官方的文档Configuring Xcode for Code Co ...

  3. iOS代码覆盖率测试工具

    基于lcov-1.11的:CodeCoverage4iOS   阅读目录 环境准备 Xcode工程配置 构建并安装程序 收集代码覆盖率 过滤结果 合并多个Coverage.info⽂件⽣成覆盖率报告: ...

  4. Spring Boot 代码覆盖率测试

    代码覆盖率测试是规范软件开发流程里一个必不可少的环节.一般都是在PG末尾阶段,伴随着IT自测产生. ↑以上,是自己yy出来的啊,反正我司是这样要求的.不跑覆盖率,鬼知道你在代码里夹杂了一些什么东西. ...

  5. (转)学习使用Jmeter做压力测试(三)--数据库测试

    数据库测试 JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本. 根据脚本,JMeter可通过线程组来模拟真实用户对Web ...

  6. 使用uiautomator做UI测试

    转载~~~~~~~~~~~~~~~~~~~~~~~~ 若有侵权,请及时联系本博主,博主将第一时间撤销 在Android 4.1发布的时候包含了一种新的测试工具–uiautomator,uiautoma ...

  7. selenium如何做兼容性测试呢

    selenium如何做兼容性测试呢. 现在selenium做自动化测试基本是web driver操作浏览器做操作,code中assert关键值,做判断. 具体执行2种 1.使用htmluint 来执行 ...

  8. [转载]使用uiautomator做UI测试

    这个只是单纯的mark一下.还没有认真去研究.鉴于最近也不会做手机的自动化测试,所以留作以后参考吧. 转自: http://blog.chengyunfeng.com/?p=504 在Android ...

  9. 使用JMeter做压力测试

    使用JMeter做压力测试 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat ...

随机推荐

  1. kotlin gradle 生成jni头文件

    目录 问题 解决方法 使用方法 代码 gradle task位置截图 问题 最近在用kotlin写jni,但是生成头文件的时候遇到了些问题. 首先 javah 在java >= 1.9 就被取消 ...

  2. 资源:Navicat15最新版本破解 亲测可用(2020-11-14)

    1.下载Navicat Premium 官网https://www.navicat.com.cn/下载最新版本下载安装 2.网盘下载破解 本人网盘链接:https://pan.baidu.com/s/ ...

  3. Java:Java中equlas和==的区别

    == 比较的是栈内存的地址值,用来判断两个对象的地址是否相同,即是否是指相同一个对象.比较的是真正意义上的指针操作. 基本数据类型如:byte,short,char,int,long,float,do ...

  4. 为什么socket是三次握手挥手却是四次

    为知笔记地址: https://794e611d.wiz03.com/wapp/pages/view/share/s/1VjC4t215AfJ2knVCX1yXcay1HkR1O0_L4CF2w2CR ...

  5. shell下读取文件数据

    参考:https://www.imzcy.cn/1553.html while和for对文件的读取是有区别的: 1. for对文件的读是按字符串的方式进行的,遇到空格什么后,再读取的数据就会换行显示 ...

  6. php 错误处理及实现

    1.php的错误,警告,异常处理如何实现,那些函数用于处理对应的错误 php 异常提示分为三类 error/warning/notice   错误补充:   Fatal Error:致命错误(脚本终止 ...

  7. mysql 索引介绍与运用

    索引 (1)什么是索引? 是一种提升查询速度的 特殊的存储结构. 它包含了对数据表里的记录的指针,类似于字典的目录. 当我们添加索引时会单独创建一张表来去存储和管理索引,索引比原数据大,会占用更多的资 ...

  8. ARTS第十三周(阅读Tomcat源码)

    1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文章 考研真 ...

  9. Codeforces Round #139 (Div. 2) 题解

    vp上古场次ing CF225A Dice Tower 1.题目简述: 有 \(n\) 个骰子被叠在了一起.对于每个骰子上的一个数,与它对面的数的和始终为 \(7\) . 你是小明,你只能从正面看这个 ...

  10. 详解Window10下使用IDEA搭建Hadoop开发环境

    前言 经过三次重装,查阅无数资料后成功完成hadoop在win10上实现伪分布式集群,以及IDEA开发环境的搭建.一步一步跟着本文操作可以避免无数天坑. 下载安装Hadoop 下载安装包 进入官网下载 ...