Jenkins集成Cobertura显示代码测试覆盖率报告

一. 概述

测试驱动的开发不能超过测试所能达到的程度。测试改进了代码质量,但这也只是针对实际测试到的那部分代码而言的。您需要有一个工具告诉您程序的哪些部分没有测试到,这样就可以针对这些部分编写测试代码并找出更多 bug。

Mark Doliner 的 Cobertura (cobertura 在西班牙语是覆盖的意思)是完成这项任务的一个免费 GPL 工具。Cobertura 通过用额外的语句记录在执行测试包时,哪些行被测试到、哪些行没有被测试到,通过这种方式来度量字节码,以便对测试进行监视。然后它生成一个 HTML 或者 XML 格式的报告,指出代码中的哪些包、哪些类、哪些方法和哪些行没有测试到。可以针对这些特定的区域编写更多的测试代码,以发现所有隐藏的 bug。

下面简单介绍一下,如果使用Jenkins集成Cobertura显示代码测试覆盖率报告

二. maven集成Cobertura

我的项目是用maven作为构建工具,需要maven集成Cobertura,故要在pom.xml文件中增加cobertura-maven-plugin插件:

        <plugins>       
                <!--  cobertura plugin start -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>  
                    <artifactId>cobertura-maven-plugin</artifactId>  
                    <version>2.7</version>  
                    <configuration>  
                        <formats>  
                            <format>html</format>  
                            <format>xml</format>  
                        </formats>  
                    </configuration>  
                </plugin>       
                <!--  cobertura plugin end -->
                
        </plugins>

我的项目采用的是微服务架构,只需要在自己要出报告的模块pom.xml中添加如上插件即可.

三. Jenkins安装Cobertura插件

《Jenkins集成Cobertura显示代码测试覆盖率报告》

四. 配置Jenkins任务
  1. 修改maven执行命令,添加Cobertura执行命令
cobertura:cobertura
# 标注、运行测试并产生 Cobertura 覆盖率报告

《Jenkins集成Cobertura显示代码测试覆盖率报告》

  1. 在Add post build action(构建后操作)这个配置项中选择如下Publish Cobertura Coverage Report:

    《Jenkins集成Cobertura显示代码测试覆盖率报告》

  2. 选择完后会显示一个配置项, 这里填上你最终cobertura生成xml report的路径,我的路径是**/target/site/cobertura/coverage.xml

    《Jenkins集成Cobertura显示代码测试覆盖率报告》

4. 重新build项目

就可以在项目首页看到code coverage report:

《Jenkins集成Cobertura显示代码测试覆盖率报告》

第一次构建,右侧的代码覆盖率报告可能会显示为空,没有关系的,多构建几次就出来了.
点击进去,可以查看更为详细的报告信息:

《Jenkins集成Cobertura显示代码测试覆盖率报告》

具体如何查看Cobertura输出报告,可参考文章<用 Cobertura 测量测试覆盖率>.

五. 参考文章:
  1. jenkins集成cobertura,调用显示cobertura的report
  2. 用 Cobertura 测量测试覆盖率.
    原文作者:夏一
    原文地址: https://www.jianshu.com/p/184c43ee3dbc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞