使用JaCoCo 分析Java 项目的单元测试覆盖率

前言

随着敏捷开发的流行,编写单元测试已经成为业界共识。但如何来衡量单元测试的质量呢?有些管理者片面追求单元测试的数量,导致底下的开发人员投机取巧,编写出大量的重复测试,数量上去了,质量却依然原地踏步。相比单纯追求单元测试的数量,分析单元测试的代码覆盖率是一种更为可行的方式。JaCoCo(Java Code Coverage)就是一种分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中哪些部分被单元测试测到,哪些部分没有没测到,并且给出整个项目的单元测试覆盖情况百分比,看上去一目了然。

Using JaCoCo

JaCoCo 工具开箱即用,官方提供了

  • Ant Tasks
  • Maven Plug-in
  • Java Agent

本文以Maven 3.3为例,介绍如何在项目中集成 JaCoCo。


    
        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 分析Java 项目的单元测试覆盖率_第1张图片
jacoco.png


打开index.html

使用JaCoCo 分析Java 项目的单元测试覆盖率_第2张图片
jacoco_report.png

参考资料

JaCoCo Documentation

你可能感兴趣的:(使用JaCoCo 分析Java 项目的单元测试覆盖率)