ant中使用cobertura分析测试用例的代码覆盖率

本文介绍如何利用Ant脚本结合Cobertura插件实现代码覆盖率测试,包括配置instrument任务为编译后的类文件添加日志代码,设置cover-test任务执行覆盖率测试,并通过coverage-report生成测试报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次还是配置问题,接上上次关于ant脚本模板的详细说明。对于一个完整的项目测试报告,一般来说我们会用JUnit生成的report来分析关于测试用例执行情况,但是,我们怎么样保证我们的测试用例的测试质量呢,我们如何知道我们的测试用例到底覆盖了多少我们的工程代码呢。Cobertura就是一个很好的开源免费插件,他不仅仅支持ant,而且对maven的支持也有很不错的表现。对于Cobertura对Maven的支持我会在下一个专题中专门阐述(官方提供的Maven plug-in有些小bug,别走开,下一专题告诉你,呵呵呵呵),我这篇文章只针对Cobertura在ant中的使用做一个说明。
 
在上一个关于ant脚本的专题中,我详细说明了如何用ant来完成mail→mkzip→report→junit→build→prepare→clean等一系列的工作,为了保证项目中能够使用Cobertura,我这次对上一个专题的ant模板进行适当的修改:mail→mkzip→coverage-report→cover-test→instrument→report→junit→build→prepare→clean
 
我增加了coverage-report(生成测试报告)、cover-test(进行覆盖率测试)和instrument(生成打过标签的二进制classes)等三个target。同时对mkzip和mail的target也进行了适当的修改,以便能够把进行覆盖测试的report进行打包发邮件。
 
首先定义一个顶级 taskdef 元素将 cobertura.jar 文件限定在当前工作目录中:


 
 
接下来需要定义一个instrument任务,该任务将在已经编译好的类文件中添加日志代码-打上标签。todir 属性指定将测量类放到什么地方。fileset 子元素指定测量哪些 .class 文件

    name="instrument" depends="report">

       todir="${instrumented.dir}">

           dir="${pro.build.path}">

              name="**/*.class" />

              name="**/*Test.class" />

          

      

   


 
 
接下来就可以进行覆盖测试了,定义一个cover-test任务,该任务依赖于instrument任务。要注意的一点就是被测量的类必须在原始类出现在类路径中之前出现在类路径中,而且需要将 Cobertura JAR 文件添加到类路径中。

    name="cover-test" depends="instrument">

       dir="${testreportdir}" />

       dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltοnerrοr="true">

           <classpath< span="" style="word-wrap: break-word;">location="cobertura.jar" />

           <classpath< span="" style="word-wrap: break-word;">location="instrumented" />

          

              dir="lib">

                  name="**/*.jar" />

             

              path="${pro.build.path}" />

              path="${pro.build.path}" />

          

           todir="${pro.build.path}">

              dir="src/main/test">

                  name="**/*Test.java" />

             

          

      

   


 
 
生成测试报告,为了能够使ant支持cobertura-report,同上个专题说到的一样,我们需要将Cobertura的相关资源文件在${ANT_HOME}/lib下放一份(cobertura-report不是ant内置标签):

    name="coverage-report" depends="cover-test">

       srcdir="src/main/java" destdir="instrumented" />

   



修改打包target

    name="mkzip" depends="coverage-report">

       destfile="report/html/test-result${ant.project.name}.zip">

           dir="report/html">

              name="**/*.html" />

              name="**/*.css" />

              name="**/*.txt" />

          

      

       destfile="report/html/cover-test-result${ant.project.name}.zip">

           dir="instrumented">

              name="**/*.html" />

              name="**/*.css" />

              name="**/*.txt" />

              name="**/*.png" />

              name="**/*.js" />

          

      

   


 
 
 
 
修改发邮件target

    name="mail" depends="mkzip">

       mailhost="smtp.126.com" mailport="25" subject="The Build Test" user="用户名" password="邮箱密码">

           address="你的发信地址" name="Danlley Wei" />

           dir="report/html">

              name="**/test-result${ant.project.name}.zip" />

              name="**/cover-test-result${ant.project.name}.zip" />

          

           address="收信人地址" name="Danlley Wei" />

           The ${pro.name}--${pro.author} has been tested !

      

   


 
 
 
最后执行一下看看结果。
 
本专题完整模板



    
    
    
    
    
    
    
    
   

    
   

    
        
            
            
                
                
            
            
            The ${pro.name}--${pro.author} has been tested ! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值