每日构建中的测试覆盖

       每日构建(包含自动化测试,至少我是这么做的)可以保证我们的代码每天都在可控制的范围内,任何人对于代码库中的修改都能通过每日构建反馈给开发小组,但是我们如何知道我们所有的测试是否够呢,我们是否遗漏的某些代码的四角了,这些问题通过简单的测试报告是无法获知的,幸好我们有代码测试覆盖工具可以帮助我们消除我们的担忧.

  下面我来说一下自己是如何实践代码覆盖率测试的.

   如下我已经拥有了自己的工程,工程结构图如下

工程中的ant build是通过eclipse自动生成的,生成方法为右击工程名-->export.

 大家可以根据自己的需要来选择生成脚本,我对于家里自己的工程基本都是用eclipse自己的生成的,至于公司则全部手写,其实ant手写也挺快的,而且也非常简单.

好了,我们现在有了ant 脚本,我们加下来需要做的就是将单元测试覆盖的功能加进去.我选择使用cobertura,免费的冬冬生成的报告非常有用,而且能和ant非常好的集成.ant本身并没有cobertura的task支持,我们需要做点手脚让ant明白我们要用cobertura.

首先当然是从cobertura的官网上(http://cobertura.sourceforge.net/)下载cobertura的最新版本,现在最新版本为1.9.

接下来我们需要在我们的build脚本中声明cobertura的 task

     < property  name ="cobertura.dir"  value ="D:/developTools/cobertura-1.9"   />
    
< path  id ="cobertura.classpath" >
        
< fileset  dir ="${cobertura.dir}" >
            
< include  name ="cobertura.jar"   />
            
< include  name ="lib/**/*.jar"   />
        
</ fileset >
    
</ path >
    
< delete  file ="cobertura.ser"   />
    
< taskdef  classpathref ="cobertura.classpath"  resource ="tasks.properties"   />

要使用我们必须对我们所需要测试的class文件打上标签

     < target  name ="instrument" >
        
< cobertura-instrument  todir ="WebRoot/WEB-INF/instrumented-classes" >
            
< fileset  dir ="WebRoot/WEB-INF/classes" >
                
< include  name ="**/*.class"   />
            
</ fileset >
        
</ cobertura-instrument >
    
</ target >

标签打好了,接下来就是测试了,这里有一点很重要,就是打上标签的class必须在被测试的class之前出现.

< target  name ="cover-test"  depends ="instrument" >
        
< mkdir  dir ="${junit.output.dir}/cover-test"   />
        
< junit  fork ="yes"  printsummary ="withOutAndErr" >
            
< formatter  type ="xml"   />
            
< classpath >
                
< fileset  dir ="D:/developTools/cobertura-1.9/lib" >
                    
< include  name ="**/*.jar"   />
                
</ fileset >
            
</ classpath >
            
< classpath  refid ="cobertura.classpath"   />
            
< classpath  location ="D:/developTools/cobertura-1.9/cobertura.jar"   />
            
< classpath  location ="WebRoot/WEB-INF/instrumented-classes"   />
            
< classpath >
                
< pathelement  path ="WebRoot/WEB-INF/classes"   />
            
</ classpath >
            
< classpath  refid ="test.classpath"   />
            
< batchtest  fork ="yes"  todir ="${junit.output.dir}" >
                
< fileset  dir ="test" >
                    
< include  name ="**/*Test*.java"   />
                    
< exclude  name ="**/AllTests.java"   />
                
</ fileset >
            
</ batchtest >
        
</ junit >
    
</ target >

ok测试也有了,现在该是产生测试报告的时候了

     < target  name ="coverage-report"  depends ="cover-test" >
        
< cobertura-report  destdir ="cobertura" >
            
< fileset  dir ="src" >
                
< include  name ="**/*.java"   />
            
</ fileset >
            
< fileset  dir ="test" >
                
< include  name ="**/*.java"   />
            
</ fileset >
        
</ cobertura-report >
    
</ target >

好了,到这里为止我们的build文件已经可以产生测试覆盖率报告了,让我们运行看看结果吧.

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值