Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29950965
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: Java

2008-09-23 08:44:51

 
    不论TestCase写的多么的好和完善,要想确保被测试的代码每一行都被执行,仍然是非常困难的。为了获取关于这方面的信息,我们可以使用JCoverage

使用目的

JCoverage正如其名,主要用于代码的覆盖测试。通过在被测试类的二进制文件中添加相应的指令,再配合junitjcoverage可以给出被测试类的代码覆盖率,并给出测试过程中哪些语句被执行,哪些没有。通过这些信息,我们可以了解测试代码的测试质量,以及被测试类中哪些语句需要特别的关注(即那些未被覆盖的语句)。

当前的版本是1.0.5,可以从下载。在实际使用时,需要将jcoverage用到的类放到对应的classpath中。在这个版本中它所依赖的外部类以及版本:

- bcel    5.1    

- log4j   1.2.8    

- getopt  1.0.9    

- oro     2.0.7  

 

用法

1.       jcoverage可以和ant配合使用,使这一过程自动化。基本用法:

-          编译被测试类和相应的被测试类的junit代码。

-          使用,将jcoverage的指令加入到被测试类的二进制文件中。为了保证这一过程能够有效,请在编译被测试类时,设置debug属性设为yes

-          执行junit代码进行代码覆盖测试。这一步需要注意的是,需要将被注入指令的测试类要早于单元测试所需的测试类装入。为了确保这一点,需要使用,使注入指令的测试类位于测试类之前

-          使用产生覆盖测试的报告。

2.       使用例子:

debug="yes">

   

   

   

       

              

       

   

       

   

   

 

   

        

   

   

       

        ${dist.coverage.instrument}"/>

       

        ${dist. coverage.junit}"/>

   

 

   

 

       

        

    

3.       jcoverage提供的ant任务标签有:

-          ,在类的二进制文件中注入jcoverage指令。注意:一定是debug模式下编译的类。

-          ,产生jcoverage报告,默认格式是HTML。也可以产生XML格式方便应用客户自定义的xslt产生其他格式的报告。产生XML格式的报告:

format="xml">

-          ,整合多个由jcoverage产生的输出文件。整个jcoverage实际的运作过程是:首先,jcoverage给测试类注入指令产生新类,被注入指令的类在junit运行过程中产生输出文件(后缀为ser),最后根据输出文件产生报告。如果有多个输出文件,jcoverage提供了来整合这些文件,最后,从整合文件中产生整体报告。用法:

-          ,检查测试是否达到设定的标准,它可以和配合使用。使用例子:

例1 

,意思是分支覆盖率需要达到95%,行覆盖率达到95%

例2   

   

包名符合xptoolkit.jcoverage.*模式的分支覆盖率达到85%,行覆盖率达到95%其余的分支覆盖率需要达到95%,行覆盖率达到95%

检查表

       在使用jcoverage时需要注意的问题:

-          jcoverage注入指令的类必须是在debug模式下编译的类。建议将那些使用debug模式编译的类的存放与最终的产品的目录分开。

-          使用了的类,与源类的目录也最好分开。

-          对于那些使用了AOP(如AspectJ)技术的项目,jcoverage不能很好的应用到那些已经添加了Aspect信息的类。

-          代码覆盖工具只是给出了指导性的意见,不要过分依赖和相信它的结果。

阅读(1777) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~