`

cobertura

 
阅读更多

Cobertura 是一款优秀的开源测试覆盖率统计工具( http://cobertura.sourceforge.net ),   Maven 通过 cobertura-maven-plugin 与之集成,可以使用 mvn cobertura:cobertura 命令生成单元测试覆盖率报告。报告会在项目的 target/site/bobertura 目录下生成 html 文件,点击 index.html 文件可以看到报告详情。

maven 插件

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

官方提供的 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. 
--------------------------------------------------------------------------------
Maven
官方提供的 Cobertura 插件只支持标准的测试发布路径(有些喜欢将测试类和工程类编译到同一个路径下,但是 Maven 官方推荐的路径确实将测试类和工程类分开编译到不同的路径下),那首先需要修改编译路径,如果在你的 Project POM 中没有对编译路径、资源路径做过任何声明,那 Maven 就会默认取标准路径,如果你的工程真的没有设置这些信息,那么,你很幸运,可以跳过此步。但是如果你的路径不是标准路径,请按以下方式进行修改:

xml 代码

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 代码

1.  < reporting >   

2.   < outputDirectory > target/site</ outputDirectory >   

3.   < plugins >   

4.    < plugin >   

5.     < groupId > org.codehaus.mojo</ groupId >   

6.     < artifactId > cobertura-maven-plugin</ artifactId >   

7.    </ plugin >   

8.   </ plugins >   

9.  </ reporting >   


QA 拿到 test case 运行的 coverage reporting 时,通常希望能够进行打包以和开发人员取得联系,本人目前尚未找到合适的 Maven 打包方法,由于在 Maven2 中支持执行 Ant 脚本,因此我在这里为 build 节点中的 plugins 节点提供了一个用 ant 脚本写的 plugin ,在 Maven 命令行通过执行 site 命令便可以将最后的测试报告(包括测试代码覆盖率和测试用例的运行情况 reports )进行打包

xml 代码

1.  < plugin >   

2.   < artifactId > maven-antrun-plugin</ artifactId >   

3.   < executions >   

4.    < execution >   

5.     < phase > site</ phase >   

6.     < configuration >   

7.      < tasks >   

8.       < copy  todir ="target/classes" >   

9.        < fileset  dir ="src/main/java" >   

10.        < include  name ="**/*.java"  />   

11.       </ fileset >   

12.      </ copy >   

13.      < jar  destfile ="target/cover-test-result.zip" >   

14.       < fileset  dir ="target/site" >   

15.        < include  name ="**/*.html"  />   

16.        < include  name ="**/*.css"  />   

17.        < include  name ="**/*.txt"  />   

18.        < include  name ="**/*.png"  />   

19.        < include  name ="**/*.js"  />   

20.       </ fileset >   

21.      </ jar >   

22.     </ tasks >   

23.    </ configuration >   

24.    < goals >   

25.     < goal > run</ goal >   

26.    </ goals >   

27.   </ execution >   

28.  </ executions >   

29. </ plugin >   


继续说 Cobertura 的附加配置:
通过上面的配置,我们已经可以对一个工程进行代码覆盖率测试了,但是 Cobertura 在你没有声明 test case 不用分析覆盖率的情况下,他会连同 test case 一起分析覆盖率,尽管这样不会影响我们整个工程的代码覆盖率,但是在生成的报告中多出一个 testcase 来,总让人感觉不是很舒服,因此,你可以采用 Cobertura 的一些附加配置来限制那些不用进行覆盖率测试的类,具体做法如下:

xml 代码

1.  < plugin >   

2.   < groupId > org.codehaus.mojo</ groupId >   

3.   < artifactId > cobertura-maven-plugin</ artifactId >   

4.   < configuration >   

5.    < instrumentation >   

6.      <!--<ignore>.*</ignore>    

7.     -->   

8.     < excludes >   

9.      < exclude > **/*Test.class</ exclude >   

10.    </ excludes >   

11.   </ instrumentation >   

12.  </ configuration >   

13.  < executions >   

14.   < execution >   

15.    < goals >   

16.     < goal > clean</ goal >   

17.    </ goals >   

18.   </ execution >   

19.  </ executions >   

20. </ plugin >   

 

命令行模式

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

1 插桩

cobertura-instrument.sh   [ CODE_SOURCE_DIR | *.jar]   --datafile=*.ser  会直接替换原有的 class 文件

合并

cobertura-merge.sh --datafile cobertura.ser 1.ser 2.ser… 合并到第一个文件中

产生报告

cobertura-report.sh --datafile *.ser --destination DIR --basedir SOURCE_CODE 生成报告文件到某个目录,默认为html

--format xml : 报告生成xml 文件

 

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

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

分享到:
评论

相关推荐

    cobertura-2.1.1测试案例覆盖率统计工具

    Cobertura是一款强大的Java代码覆盖率工具,用于度量软件测试的充分性。它通过分析类文件,跟踪代码执行情况,从而提供详细的测试覆盖率报告。在软件开发过程中,测试覆盖率是评估测试质量的重要指标,它可以帮助...

    Junit+ant+cobertura示例

    总的来说,"Junit+ant+cobertura示例"是一个展示如何使用JUnit进行单元测试,通过Ant进行自动化构建,并利用Cobertura进行代码覆盖率分析的实践案例。这样的组合可以帮助开发者更高效地管理和提升代码质量,确保软件...

    Cobertura代码覆盖率测试工具介绍

    Cobertura 代码覆盖率测试工具介绍 Cobertura 是一种开源测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码以及哪些代码没有执行,来测量测试覆盖率。除了找出未测试到的代码并发现 BUG 外,...

    Cobertura代码覆盖测试工具:cobertura-2.1.1

    Cobertura是一款强大的Java代码覆盖率测试工具,它的主要任务是对Java源代码进行度量,以确定测试套件在运行时覆盖了多少代码。这个过程对于确保软件的质量和完整性至关重要,因为全面的测试覆盖率可以帮助开发者...

    cobertura 1.9.4.1

    **Cobertura 1.9.4.1:单元测试覆盖率工具详解** Cobertura 是一个开源的 Java 代码覆盖率工具,主要用于衡量软件项目中单元测试的覆盖程度。版本 1.9.4.1 是该工具的一个稳定版本,它为开发者提供了详细的信息,...

    cobertura代码覆盖率工具

    Cobertura 代码覆盖率工具详解 Cobertura 是一个流行的代码覆盖率工具,用于衡量 Java 应用程序的代码覆盖率。它可以生成详细的报告,帮助开发者了解代码的测试覆盖率,从而提高代码的质量。 什么是代码覆盖率? ...

    cobertura-1.9.4.1-src.zip

    Cobertura是一款开源的Java代码覆盖率工具,它用于测量Java程序单元测试的覆盖率。这个"cobertura-1.9.4.1-src.zip"压缩包包含的是Cobertura 1.9.4.1版本的源代码。源代码是任何软件开发的基础,它允许开发者深入...

    用 Cobertura 测量测试覆盖率

    标题中的“用 Cobertura 测量测试覆盖率”指的是在软件开发过程中使用 Cobertura 工具来评估代码的测试覆盖率。测试覆盖率是衡量测试质量的重要指标,它表示代码中被测试用例执行到的比例。Cobertura 是一个开源的 ...

    使用Cobertura统计单元测试覆盖率

    【使用Cobertura统计单元测试覆盖率】 在软件开发过程中,单元测试是确保代码质量的重要环节。它能够帮助我们发现潜在的错误,提高代码的可维护性。然而,仅仅编写单元测试是不够的,我们还需要知道这些测试覆盖了...

    cobertura1.9.1

    Cobertura 1.9.1 是一个历史悠久的代码覆盖率工具,主要在Java开发环境中使用。它能够帮助开发者测量和报告程序代码的测试覆盖率,即多少代码被单元测试执行过。这对于确保软件的质量和可靠性至关重要,因为未经过...

    cobertura测试代码

    【标题】:“Cobertura测试代码” 在软件开发过程中,测试是至关重要的环节,它确保了代码的质量和稳定性。Cobertura是一款Java语言的代码覆盖率工具,它可以帮助开发者量化单元测试的效果,通过度量代码被测试覆盖...

    Java Cobertura

    ### Java Cobertura:代码覆盖率工具详解 #### 一、引言 在软件开发过程中,确保代码的质量至关重要。其中,测试覆盖率是衡量代码质量的关键指标之一。Cobertura是一款开源的Java代码覆盖率工具,它能够帮助开发者...

    cobertura工具包

    Cobertura工具包是一款用于Java应用程序的代码覆盖率工具,它能够帮助开发者衡量单元测试对代码的覆盖程度。在软件开发中,确保代码的覆盖率是一项重要的质量指标,因为高覆盖率通常意味着更多的代码得到了测试,...

    gradle-cobertura-plugin-1.0.zip

    【标题】:“gradle-cobertura-plugin-1.0.zip”和“javafx-maven-plugin.zip” 【描述】中提到的两个压缩包文件涉及到的是Java开发中的自动化构建工具和测试覆盖率工具。首先,“gradle-cobertura-plugin-1.0.zip...

    cobertura源代码

    Cobertura是一款开源的Java代码覆盖率工具,它用于衡量你的测试套件覆盖了多少源代码。在软件开发过程中,代码覆盖率是衡量测试质量的一个重要指标,它可以帮助开发者了解测试的全面性和有效性。Cobertura通过静态...

    Python库 | lcov_cobertura-1.3.macosx-10.8-intel.exe

    《Python库:lcov_cobertura-1.3.macosx-10.8-intel.exe详解》 在软件开发领域,尤其是Python编程环境中,库是开发者的重要工具,它们提供了丰富的功能,帮助我们高效地完成任务。今天我们将深入探讨一个名为`lcov_...

    cobertura-2.1.1-bin.tar

    Cobertura可用于分析Java代码的测试覆盖率。Cobertura根据没有被测试覆盖的代码生成基于HTML的报告。 Cobertura提供可用于插装、检查和测试代码的工具。通过监控可测试的代码,Cobertura允许你使用你选择的测试框架...

    cobertura-2.1.1.jar

    cobertura-2.1.1.jar下载

    cobertura-2.1.1-bin

    Cobertura is a free Java code coverage reporting tool. It is based on jcoverage 1.0.5. See the Cobertura web page and wiki for more details. Since 2.0.0, Cobertura versions follow the Semantic ...

Global site tag (gtag.js) - Google Analytics