昨天写了一个很长方法的单元测试代码,然后BOSS检查了一下,找来自动化测试的哥们,帮着看了一下改进。那哥们建议我用cobertura测试一下代码覆盖率,听起来蛮有趣的,在他的帮助下做了一下。不算复杂,记录于此,以备以后再次使用方便查阅。
背景,准备:
项目IDE是eclipse,针对一个.java文件中的class进行单元测试,使用eclipse集成JUnit进行测试。
在该目录下有对cobertura的详细介绍,都是英文,鸭梨真的很大。地址:http://cobertura.sourceforge.net/commandlinereference.html为描述简单特此命名:原文件,helloWorld.java;类名:helloWorld;测试类helloWorldTest.java;测试类名:helloWorldTest
我的项目为maven项目,需要配置pom.xml文件添加依赖,通过http://mvnrepository.com/ 查找添加,同时添加cobertura.jar文件。
首先下载cobertura,在上面的地址就可以下载到。我用的系统是winXP,下载的是cobertura-1.9.4.1-bin.zip。然后解压到任意路径,
打开CMD命令行,cd 到以上解压路径。
执行,命令:
(此时在cobertura根目录下生成一个名为cobertura.ser的文件,重命名为:cobertura_1.ser)
2.将第一步中生成的.class文件再次拷贝回项目原路径,覆盖掉原文件;
(此时在项目根目录下生成一个名为cobertura.ser的文件,重命名为:cobertura_2.ser)
(将3中生成的cobertura-2.ser文件拷贝到cobertura根目录下)
4.CMD下执行命令:(2)cobertura-merge.bat cobertura_1.ser cobertura_2.ser 这两个文件merge生成一个新文件cobertura.ser
(此命令中:cobertura.ser为分析报告文件,D:\report\coverage为报告生成目录,D:\WORKSPACE\helloWorld\src为项目文件根目录。)
此时既可生成一份测试覆盖度的报告,形式为html文件,打开形式如图。
++
![](http://hi.csdn.net/attachment/201108/31/0_1314762840qM1c.gif)
报告 结果:
整体基本正确,可能会出现相对偏差...
至少在我的项目里面出现的覆盖报错。
P.s :
这个应该也属于自动化测试的范畴的,至少属于辅助。感觉还是很有趣的。这种利用两次不同编译进行对比得到结果的方式还是很不错的嘛。
网上也查了一些关于cobertura的相关文章,都是各种配置文件,很多都是基于ANT的,虽然我对ANT么有了解,对MAVEN也是刚刚接触,这些以前在学校都是听而未听的。
写下这些东西,以备以后稍微遗忘的回望查询。
还有好多东西要学,还有好多路要走,请君努力!