使用Cobertura做代码覆盖率测试
经验总结:首先要把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的问题;
经验总结:
对于自己不熟悉的技术,不要走捷径,如把cob-junit与cobertura测试报告放在一个文件夹里;
出错后要仔细阅读错误报告,寻找能够代表这个错误的关键词句,如“java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/HasBeenInstrumented”;
如果通过错误报告自己不能解决,使用搜索引擎查找前一步中的关键词句,寻找解决问题的可能经验;
如果暂时找不到能解决问题的经验,则按照软件(这里是cobertura)的Tutorial(一般来自官网)构建一个最简单的原型,并使其正常工作,然后不断向自己的问题靠拢,在不断修改原型的过程中对可能出错的方面进行筛选,最终锁定出错的位置;
实践中面对一些古怪的错误,往往要重复、交叉进行很多次第3步和第4步,才能最终解决问题。
使用Cobertura做代码覆盖率测试的更多相关文章
- 使用Cobertura统计JUnit测试覆盖率
这是一个JavaProject,关于Cobertura的用法详见代码注释 首先是应用代码(即被测试的代码) package com.jadyer.service; public class Calcu ...
- xcode进行代码覆盖率测试
去年写的文章,搬到cnblog 本文所述的方法只对xcode5做过测试,xcode6是否可行尚未可知. 配置编译选项 首先请参考苹果官方的文档Configuring Xcode for Code Co ...
- iOS代码覆盖率测试工具
基于lcov-1.11的:CodeCoverage4iOS 阅读目录 环境准备 Xcode工程配置 构建并安装程序 收集代码覆盖率 过滤结果 合并多个Coverage.info⽂件⽣成覆盖率报告: ...
- Spring Boot 代码覆盖率测试
代码覆盖率测试是规范软件开发流程里一个必不可少的环节.一般都是在PG末尾阶段,伴随着IT自测产生. ↑以上,是自己yy出来的啊,反正我司是这样要求的.不跑覆盖率,鬼知道你在代码里夹杂了一些什么东西. ...
- (转)学习使用Jmeter做压力测试(三)--数据库测试
数据库测试 JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本. 根据脚本,JMeter可通过线程组来模拟真实用户对Web ...
- 使用uiautomator做UI测试
转载~~~~~~~~~~~~~~~~~~~~~~~~ 若有侵权,请及时联系本博主,博主将第一时间撤销 在Android 4.1发布的时候包含了一种新的测试工具–uiautomator,uiautoma ...
- selenium如何做兼容性测试呢
selenium如何做兼容性测试呢. 现在selenium做自动化测试基本是web driver操作浏览器做操作,code中assert关键值,做判断. 具体执行2种 1.使用htmluint 来执行 ...
- [转载]使用uiautomator做UI测试
这个只是单纯的mark一下.还没有认真去研究.鉴于最近也不会做手机的自动化测试,所以留作以后参考吧. 转自: http://blog.chengyunfeng.com/?p=504 在Android ...
- 使用JMeter做压力测试
使用JMeter做压力测试 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat ...
随机推荐
- Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记
目录 k8s高可用架构解析 Kubeadm基本环境配置 Kubeadm系统及内核升级 Kubeadm基本组件安装 Kubeadm高可用组件安装 Kubeadm集群初始化 高可用Master及Token ...
- Python装饰器-给你的咖啡加点料
今天你的咖啡加糖了吗? 让我们通过一个简单的例子来引出装饰器的概念及用法.在引出装饰器之前,我们先来了解一下函数的概念. 一.函数回顾 1.在python中函数是一等公民,函数也是对象.我们可以把函数 ...
- 『学了就忘』Linux基础 — 1、UNIX系统介绍
目录 (一)UNIX系统介绍 1.UNIX系统发展历史 2.UNIX 主要发行版本 (二)GNU计划 1.GNU计划介绍 2.为何Stallman会发起这个GNU计划呢? 3.GNU的通用公共许可证: ...
- Nginx:Nginx配置url重定向
符号含义: 正则表达式匹配: ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配: -f和!-f用来判断是否存在文件 -d和!-d用 ...
- Robot Framework中SSHLibrary 学习与总结
一.安装SSHLibrary 二.关键字 1.与连接相关的 Open Connection Get Connection Get Connections Switch Connection Clos ...
- Kubernetes 1.13.3 部署 Prometheus+Grafana-7.5.2(最新版本踩坑)
本教程直接在 Kubernetes 1.13.3 版本上安装 Prometheus 和 Grafana-7.5.2,至于它们的原理和概念就不再赘述,这里就直接开始操作. Git 下载相关 YAML 文 ...
- Vue权限路由实现总结
前言 年前完工了做了半年的铁路后台管理系统,系统整体业务比较复杂,这也是我到公司从 0 到 1 的 一个完整系统实践,做这个系统过程中踩了不少坑,也学到了很多. 做完这个系统没多久,紧接着又一个系统来 ...
- C语言:最大公约数和最小公倍数
#include <stdio.h> int main() { int a,b,c,m,t; printf("请输入两个数:\n"); scanf("%d%d ...
- C语言:\t\b\n应用
#include <stdio.h> int main() { printf("123\n"); printf("%c\n",'\177'); pr ...
- PYTHON 错误提示:ModuleNotFoundError: No module named 'cv2'
ModuleNotFoundError: No module named 'cv2' 解决方法: pip install -i https://pypi.tuna.tsinghua.edu.cn/si ...