前面一篇文章介绍了代码覆盖率一些概念和代码覆盖率测试中一些准则或者覆盖率方式,这篇继续来学习代码覆盖率一个软件,或者一个插件。这个插件叫Cobetura, 可以直接在cmd通过命令运行,不过一般我们用maven集成,下面来看看这个maven+Cobetura集成过程。
1.项目准备
这个需要Eclipse新创建一个标准的maven项目,不然得到html报告,覆盖率全部选项都是0.
之前我们是这样两个分开项目
现在新建改成这样,中间带Demo是新建的标准的maven项目,什么是标准maven项目,下面这个有三个红圈的就是。
就是把原来被测项目代码拷贝到src/main/java包下,测试代码拷贝到src/test/java下,然后添加junit 4到build path就可以,环境就准备好了。
2.添加pom.xml依赖
直接打开pom.xml,拷贝我这边的<reporting>的部分内容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ProteinTrackerDemo</groupId>
<artifactId>ProteinTrackerDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ProteinTrackerDemo</name>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</reporting>
</project>
然后Ctrl+s保存。
3.cmd运行测试得到报告
打开cmd,cd到Demo这个工程根目录,执行 mvn cobertura:cobertura, 然后等待一会,执行结束,我们去site下用浏览器打开index.html文件
上面图文件路径可能要刷新当前工程才出来。
展开包
上面三个java文件是src/main/java下的源码,绿色表示单元测试覆盖数量,红色表示没覆盖的值。Line Coverage表示代码行覆盖,Branch Coverage 是分支覆盖,例如if else的代码就是分支。Complexity表示复杂度,复杂度越高,代码越可读性越差。
点击TrackingService这个类,下拉
三行红色表示我们用例没有覆盖带的代码,所以我们需要去补充单元测试用例去覆盖这些红色的地方。这个代码覆盖率工具cobetura基本使用就介绍到这里。