前言
随着敏捷开发的流行,编写单元测试已经成为业界共识。但如何来衡量单元测试的质量呢?有些管理者片面追求单元测试的数量,导致底下的开发人员投机取巧,编写出大量的重复测试,数量上去了,质量却依然原地踏步。相比单纯追求单元测试的数量,分析单元测试的代码覆盖率是一种更为可行的方式。JaCoCo(Java Code Coverage)就是一种分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中哪些部分被单元测试测到,哪些部分没有没测到,并且给出整个项目的单元测试覆盖情况百分比,看上去一目了然。
Using JaCoCo
JaCoCo 工具开箱即用,官方提供了
Ant Tasks
Maven Plug-in
Java Agent
本文以Maven 3.3为例,介绍如何在项目中集成 JaCoCo。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
spring4-in-action
com.bytebeats
1.0-SNAPSHOT
4.0.0
spring-statemachine
jar
spring-statemachine
http://maven.apache.org
UTF-8
org.springframework
spring-context
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework.statemachine
spring-statemachine-core
1.2.3.RELEASE
org.slf4j
slf4j-api
org.slf4j
jcl-over-slf4j
ch.qos.logback
logback-core
ch.qos.logback
logback-classic
junit
junit
org.jacoco
jacoco-maven-plugin
0.7.9
default-prepare-agent
prepare-agent
default-report
prepare-package
report
default-check
check
执行 mvn clean package命令后,在项目的 ROOT\target\site\目录会生成 jacoco目录,如下:
jacoco.png
打开index.html
jacoco_report.png
参考资料