博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Cobertura做代码覆盖率测试
阅读量:5315 次
发布时间:2019-06-14

本文共 1126 字,大约阅读时间需要 3 分钟。

经验总结:首先要把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步,才能最终解决问题。

转载于:https://www.cnblogs.com/darkmatter/p/3606825.html

你可能感兴趣的文章
R-Sys.time计算程序运行时间
查看>>
Java类模板
查看>>
【转贴】SAP HANA内存数据库详解
查看>>
二分查找BinarySearch(Java)
查看>>
两种应该掌握的排序方法--------1.shell Sort
查看>>
vuejs动态组件给子组件传递数据
查看>>
javascript constrator and prototype
查看>>
杭电2065(递推)红色病毒
查看>>
No Language-Support in system setting ,Ubuntu
查看>>
spring 实现测试解耦
查看>>
Python学习笔记第二十一周
查看>>
js 获取视频的第一帧
查看>>
各种正则验证
查看>>
C#中IS和AS操作符的区别(转)
查看>>
win7远程桌面连接
查看>>
深入浅出JMS(一)——JMS简单介绍
查看>>
[PTA] 数据结构与算法题目集 6-4 链式表的按序号查找 & 6-5 链式表操作集 & 6-6 带头结点的链式表操作集...
查看>>
观察者模式(Observer)
查看>>
DPDK编译步骤
查看>>
Python基础理论 - 面向对象
查看>>