使用cobertura检测测试覆盖率

昨天写了一个很长方法的单元测试代码,然后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 到以上解压路径。


执行,命令:

1.将事先编译好的helloWorld.class文件拷贝到cobertura根路径下,CMD下执行命令:(1)cobertura-instrument.bat helloWorld.class;

(此时在cobertura根目录下生成一个名为cobertura.ser的文件,重命名为:cobertura_1.ser)


2.将第一步中生成的.class文件再次拷贝回项目原路径,覆盖掉原文件;


3.在eclipse中去掉【project->build auto】的对勾,选择不执行build文件,既不生成新的.class文件执行helloWorldTest.java文件;

(此时在项目根目录下生成一个名为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


5.CMD下执行命令:(3)cobertura-report.bat --format html --datafile cobertura.ser --destination D:\report\coverage D:\WORKSPACE\helloWorld\src
(此命令中:cobertura.ser为分析报告文件,D:\report\coverage为报告生成目录,D:\WORKSPACE\helloWorld\src为项目文件根目录。)

此时既可生成一份测试覆盖度的报告,形式为html文件,打开形式如图。

++

使用cobertura检测测试覆盖率_第1张图片


报告 结果:


整体基本正确,可能会出现相对偏差...

至少在我的项目里面出现的覆盖报错。


P.s :

这个应该也属于自动化测试的范畴的,至少属于辅助。感觉还是很有趣的。这种利用两次不同编译进行对比得到结果的方式还是很不错的嘛。

网上也查了一些关于cobertura的相关文章,都是各种配置文件,很多都是基于ANT的,虽然我对ANT么有了解,对MAVEN也是刚刚接触,这些以前在学校都是听而未听的。

写下这些东西,以备以后稍微遗忘的回望查询。


还有好多东西要学,还有好多路要走,请君努力!

你可能感兴趣的:(eclipse,maven,JUnit,测试,单元测试,report)