一. 概述
测试驱动的开发不能超过测试所能达到的程度。测试改进了代码质量,但这也只是针对实际测试到的那部分代码而言的。您需要有一个工具告诉您程序的哪些部分没有测试到,这样就可以针对这些部分编写测试代码并找出更多 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任务
- 修改maven执行命令,添加Cobertura执行命令
cobertura:cobertura # 标注、运行测试并产生 Cobertura 覆盖率报告
网络异常,图片无法展示
|
- 在Add post build action(构建后操作)这个配置项中选择如下Publish Cobertura Coverage Report:
网络异常,图片无法展示|
- 选择完后会显示一个配置项, 这里填上你最终cobertura生成xml report的路径,我的路径是
**/target/site/cobertura/coverage.xml
网络异常,图片无法展示
|
4. 重新build项目
就可以在项目首页看到code coverage report:
网络异常,图片无法展示
|
第一次构建,右侧的代码覆盖率报告可能会显示为空,没有关系的,多构建几次就出来了.
点击进去,可以查看更为详细的报告信息:
网络异常,图片无法展示
|
具体如何查看Cobertura输出报告,可参考文章<用 Cobertura 测量测试覆盖率>.