Cobertura—JAVA开源测试覆盖率统计工具

七 27th, 2012

cobertura是一款非常好用java开源工具,用于测试过程中覆盖率统计。目前,maven通过和cobertura-maven-plugin 插件集成,可以在编译项目的同时生成覆盖率统计文件:

命令如下:

Image

生成的报告有html和xml这2种格式,其存放的路径为:**/target/site/cobertura 目录下,点起其中的index.html,可以看到报告的细节。一般生成的cobertura.xml格式便于我们做数据的二次收集(现在我们通过写hudson插件来收集该数据,用于持续集成平台中的覆盖率展示)

参考官方文档: http://mojo.codehaus.org/cobertura-maven-plugin/plugin-info.html

一   基本配置

使用maven的插件,当然也需要在pom文件中指定,其格式如下:

<reporting>
      <plugins>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.4</version>
            <configuration>
               <formats>
                  <format>html</format>
                  <format>xml</format>
               </formats>
            </configuration>
         </plugin>
      </plugins>
   </reporting>

官方提供的 maven 插件,大致有以下 goal :

--------------------------------------------------------------------------------
Goal                            Description  
cobertura:check            Check the Last Instrumentation Results.  
cobertura:clean            Clean up rogue files that cobertura maven plugin is tracking.  
cobertura:dump-datafile    Cobertura Datafile Dump Mojo  
cobertura:instrument       Instrument the compiled classes.  
cobertura:cobertura        Instruments, Tests, and Generates a Cobertura Report.  

参考官方文档: http://cobertura.sourceforge.net/commandlinereference.html

Maven 官方提供的 Cobertura 插件只支持标准的测试发布路径,如果你需要改变路径,那首先需要修改编译路径,如果在你的 Project POM 中没有对编译路径、资源路径做过任何声明,那 Maven 就会默认取标准路径。如果你的路径不是标准路径,请按以下方式进行修改:

1.  < sourceDirectory > src/main/java</ sourceDirectory >   
2.  < scriptSourceDirectory > src/main/scripts</ scriptSourceDirectory >   
3.  < testSourceDirectory > src/test/java</ testSourceDirectory >   
4.  < outputDirectory > target/classes</ outputDirectory >   
5.  < testOutputDirectory > target/test-classes</ testOutputDirectory >   

通常情况下我们只需要进行如下配置就足可以应付当前的测试需求了:

xml 代码

< reporting >   
    < outputDirectory > target/site</ outputDirectory >   
    < plugins >   
          < plugin >   
              < groupId > org.codehaus.mojo</ groupId >   
              < artifactId > cobertura-maven-plugin</ artifactId >   
         </ plugin >   
     </ plugins >   
</ reporting >   

 

当然,你也可以采用 Cobertura 的一些附加配置来限制那些不用进行覆盖率测试的类,具体做法如下:

< plugin >   
       < groupId > org.codehaus.mojo</ groupId >   
       < artifactId > cobertura-maven-plugin</ artifactId >   
       < configuration >   
            < instrumentation >   
                  < excludes >   
                       < exclude > **/*Test.class</ exclude >   
                   </ excludes >   
            </ instrumentation >   
       </ configuration >   
        < executions >   
              < execution >   
                   < goals >   
                          < goal > clean</ goal >   
                   </ goals >   
              </ execution >   
        </ executions >   
</ plugin >   

 

二 命令行模式

1 . 插桩

 cobertura-instrument.sh   [ CODE_SOURCE_DIR | *.jar]   --datafile=*.ser  

     会直接替换原有的 class 文件

2  合并

cobertura-merge.sh --datafile cobertura.ser 1.ser 2.ser… 

      合并到第一个文件中

3  产生报告

cobertura-report.sh --datafile *.ser --destination DIR --basedir SOURCE_CODE 

      生成报告文件到某个目录,默认为html

  4.  指定报告格式

--format xml

      报告生成xml

   5.  文件

 -Dnet.sourceforge.cobertura.datafile=${basedir}/cobertura.ser

      指定生成的覆盖率文件生成的路径

更多参考官方文档: http://cobertura.sourceforge.net/commandlinereference.html 





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51639

订阅本站:http://www.wangyuxiong.com/feed

分类: 工具推荐 测试技术         标签: , ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量