Clover在JUnit中的使用

系统 1424 0

下面还是简要的介绍一下Clover在JUnit中的使用(构建工具为Ant):
    1.在使用Clover做测试覆盖率分析之前请确保您的代码及测试代码无误。
    2.如果采用Ant作为构建工具,则将clover.jar放入Ant的classpath下。也可采用另一种方法,可先将clover.jar及Clover中的另一个jar包cenquatasks.jar放入项目的lib下,采用cenquatasks.jar中的extendclasspath方法将clover.jar扩展到Ant下,在build.xml中加入以下代码:

< taskdef  resource ="com/cenqua/ant/antlib.xml"  classpath ="lib/cenquatasks.jar" />
< extendclasspath  path ="lib/clover.jar" />
< taskdef  resource ="clovertasks"  classpath ="lib/clover.jar" />
    3.添加clovertask到Ant中,如下:
< taskdef  resource ="clovertasks" />
    4.在build.xml中加入clover的初始化任务:
   <!--  clover.init -->
  
< target  name ="clover.init" >
    
< clover-setup  initString ="clover_coverage.db"  preserve ="true" />
  
</ target >
注意:步骤3中的代码可放入4中。
    5.加入一个或多个运行clover report的任务,最后的结果有多种输出方式:html、pdf、swing、xml等等。
其中,swing方式的代码如下:
  <!--  show the clover coverage result with swing  -->
   
< target  name ="clover.swing"  depends ="clover" >
        
< clover-view />
   
</ target >
html方式如下:
  <!--  show the clover coverage result with html file  -->
 
< target  name ="clover.html"  depends ="clover" >
    
< clover-report >
      
< current  outfile ="${target.dir}/clover"  title ="Clover Report" >
        
< format  type ="html" />  
      
</ current >      
    
</ clover-report >
  
</ target >
    上面代码中都depends="clover",这里clover任务只是为了简洁而设,代码如下:
<!--  runs the clover  -->
    
< target  name ="clover"  depends ="clean,clover.init,compile,test" />
    通过以上代码的设置即可运行clover.swing 或者clover.html运行Clover查看测试代码的覆盖率。测试结果如下图所示:
     其中build.xml中的运行JUnit测试代码的任务如下:
  <!--  runs the tests  -->
     
< target  name ="test" >
        
< java  classname ="MoneyTest"   fork ="yes" >
            
< classpath  refid ="build.classpath" />
        
</ java >
     
</ target >
这是通过java命令运行的,也就是在MoneyTest.java中有main方法:
public   static   void  main(String args[])  {
        junit.textui.TestRunner.run(MoneyTest.
class );
    }
还可以直接通过junit命令运行,如下:
< target  name ="unittest"  depends ="clover.init,compile"  description ="Test the application" >
        
< taskdef  resource ="clovertasks" />
        
< echo  message ="Testing the application with junit .." />
        
< junit  haltonfailure ="true"  printsummary ="true"   fork ="true" >
                
< classpath  refid ="build.classpath" />
                
< classpath >
                        
< pathelement  path ="${ant.home}/lib/clover.jar" />
                
</ classpath >
                
< formatter  type ="brief"  usefile ="false" />
    
<!--             <test name="MoneyTest"/>    -->
                
< batchtest >
                        
< fileset  dir ="${build}"  includes ="**/*Test.class" />
                
</ batchtest >
        
</ junit >
</ target >
以上两种test方法都可使用。
    在所有任务中,首先要运行clover.init这样就能启动clover,对后面的任务进行监控并adapt一些操作,在随后的compile过程中,clover会记录所编译的java文件的各种数据并存入其db数据库,clover会监控随后运行的UnitTest,计算测试的覆盖率并写入数据库。这里有一点要注意:无论是采用java方式还是junit方式运行test房间,都要在命令中加入属性fork="true",这是因为clover要在JVM shutdown的时候将数据写入数据库,如果没有这个属性,就会出现“no coverage data found for *.db”错误,出现测试覆盖率均为0的结果。

Clover在JUnit中的使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论