`

配置 Cobertura 过滤掉无需测试代码

 
阅读更多

 

代码覆盖率的统计指标

代码覆盖率指的是一种衡量代码覆盖程度的方式,通常会对以下几种方式进行统计分析:

  • 行覆盖。它又被称作语句覆盖或基本块覆盖。这是一种较为常用且具有代表性的指标,度量的是被测代码中每个可执行语句是否被执行到。
  • 条件覆盖。它度量的是当代码中存在分支时,是否能覆盖进入分支和不进入分支这两种情况。这要求开发人员编写多个测试用例以分别满足进入分支与不进入分支这两种情况。
  • 路径覆盖。它度量的是当代码中存在多个分支时,是否覆盖到分支之间不同组合方式所产生的全部路径。这是一种力度最强的覆盖检测,相对而言,条件覆盖只是路径覆盖中的一部分。

 

代码覆盖率 = 被测代码行数 / 参测代码总行数 * 100%。

 

Cobertura 通常会与 Maven 一起使用,POM 文件的基本结构
<project> 
  <reporting> 
     <plugins> 
        <plugin>
          <!-- 此处用于将 Cobertura 插件集成到 Maven 中 --> 
          <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.5.2</version> 
         </plugin> 
      </plugins>
   </reporting> 
</project>

单元测试代码编写完成,所有设置配制好后,在工程根目录运行“mvn cobertura:cobertura”Maven 就会对代码进行编译。编译完成之后,就会在项目中运行测试代码并输出测试报告结果到目录 project_base$\target\site\cobertura\index.html

过滤不需进行单元测试的包和类

针对项目中不需进行单元测试的包和类,我们可以利用 POM 文件中 Cobertura 的标注 (instrument) 设置,对相应的包和类进行剔除 (exclude) 或筛选 (include),使之不体现在覆盖率报告中,去除它们对整个覆盖率的影响,从而使报告更具针对性。其基本 POM 标签设置及解析如清单 3 中所示。

清单 3. POM 中剔除包和类的设置示例
<configuration> 
    <instrumentation> 
    <excludes> 
    <!--此处用于指定哪些类会从单元测试的统计范围中被剔除 -->
                <exclude>exs/res/process/egencia/Mock*.class</exclude>
                <exclude>exs/res/process/test/**/*Test.class</exclude> </excludes>
    </instrumentation> 
    </configuration> 
    <executions> 
          <execution>
                <goals> 
                     <goal>clean</goal> 
                </goals> 
           </execution>
   </executions>

 

过滤类中的函数

这一版本中的 Cobertura 只能支持到类级别的过滤,而对于类中方法的过滤是不支持的。因此我们需要通过修改 Cobertura 源码,使 Cobertura 支持对类中方法的过滤。

原理是 : 修改 Cobertura-maven-plugin 项目中的 InstrumentationTask 类,增加 Ignoretrival,IgnoreMethod 等新增 POM 参数。配制正则表达式,修改 Cobertura 核心,在标注(instrumentation) 阶段遍历函数名时,检测函数名是否匹配传入的正则表达式,过滤函数体代码,从而把这些函数代码排除在代码覆盖统计之外,节省开发人员对这类代码的测试精力。

 

参考 使用 Cobertura 和反射机制提高 Java 单元测试中的代码覆盖率

 

分享到:
评论

相关推荐

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

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

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

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

    cobertura测试代码

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

    Junit+ant+cobertura示例

    通过Cobertura,开发者可以了解代码的测试完整性,找出未被充分测试的部分,从而提高软件质量。 【Junit与Ant集成】 在Java项目中,通常使用Ant脚本来执行JUnit测试。通过在Ant构建文件(build.xml)中定义一个...

    cobertura代码覆盖率工具

    Cobertura 代码覆盖率工具...Cobertura 代码覆盖率工具是一个功能强大且易于使用的工具,能够帮助开发者衡量代码的测试覆盖率。通过使用 Cobertura 工具包,开发者可以生成详细的代码覆盖率报告,从而提高代码的质量。

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

    Cobertura是一款开源的Java代码覆盖率工具,它可以帮助我们度量和可视化我们的单元测试对代码的覆盖程度。 1. **什么是单元测试覆盖率** 单元测试覆盖率是指执行单元测试后,被测试代码被执行的比例。它通常用...

    用 Cobertura 测量测试覆盖率

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

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

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

    cobertura源代码

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

    cobertura

    标题“Cobertura”指的是一个开源的Java代码覆盖率工具,它可以帮助开发者衡量和理解他们的测试套件对代码的覆盖程度。Cobertura通过分析类文件,跟踪代码执行情况,然后生成详细的报告,显示哪些行代码被测试覆盖,...

    cobertura 1.9.4.1

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

    cobertura1.9.1

    6. **持续集成**:在持续集成(CI)服务器如Jenkins或Travis CI上配置Cobertura,每次提交代码时自动运行测试并检查覆盖率,以确保代码质量。 Cobertura虽然现在已经被更现代的工具如JaCoCo取代,但对于学习代码...

    cobertura-1.9.4.1-src.zip

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

    Java Cobertura

    Cobertura是一款开源的Java代码覆盖率工具,它能够帮助开发者了解哪些部分的代码已经被测试覆盖,哪些部分还需要进一步编写测试用例。 #### 二、Cobertura简介 Cobertura是一款免费且开源的代码覆盖率分析工具,...

    cobertura工具包

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

    Java测试覆盖率工具cobertura1.9

    Java测试覆盖率工具Cobertura1.9是一款用于评估Java代码测试完整性的工具,它通过分析程序执行时的路径,计算出被测试代码的覆盖率。在软件开发过程中,测试覆盖率是衡量代码质量、测试充分性的重要指标,它可以帮助...

    cobertura-2.1.1-bin.tar

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

    cobertura和weblogic整合使用-代码覆盖率测试

    cobertura和weblogic整合使用-代码覆盖率测试 里面详细步骤和使用说明,并附加xml文件,不懂的可以QQ我,147806015,

    cobertura-2.1.1

    Cobertura 是一个开源的Java代码覆盖率工具,它能够分析Java程序的运行情况,记录哪些代码被测试用例执行过,哪些没有。这个过程通常在持续集成环境中进行,以便开发团队可以实时了解代码的健康状况。Cobertura-...

Global site tag (gtag.js) - Google Analytics