JaCoCo从脱水到浸泡 (3)JaCoCo使用

通过Maven 插件使用JaCoCo

JaCoCo 提供了maven插件可以方便地和Maven工具进行集成,我们可以通过一个简单的项目来实践一下

一个简单的Demo

首先我们创建一个Maven项目,如下图:

demo project

项目非常简单,一个业务类Calculator 以及对这个类的一个单元测试类CalculatorTest

Calculator.java

public class Calculator {

    public int add(int a,int b){
        return a + b;
    }

    public int subtract(int a ,int b){
        return a - b;
    }

    public int multiplicative(int a, int b){
        return a * b;
    }

    public float divide(int a,int b){
        return (float) a / (float)b;
    }
}

CalculatorTest.java

public class CalculatorTest {

    Calculator calculator;

    @Before
    public void before(){
        calculator = new Calculator();
    }

    @Test
    public void add() {
    }

    @Test
    public void subtract() {
    }

    @Test
    public void multiplicative() {
        int c = calculator.multiplicative(1,2);
        Assert.assertEquals(2,c);
    }

    @Test
    public void divide() {
    }
}

pom.xml的配置中,在dependencies节点中增加JUnit的依赖配置

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    <scope>test</scope>
</dependency>

在build->plugins节点中,增加JaCoCo的插件配置

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.5</version>
    <executions>
        <execution>
            <id>default-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>default-report</id>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

然后,在Maven工具窗口中运行verify
maven_verify

Maven构建工具对项目进行编译,运行单元测试,打包,生成单元覆盖率报告,默认情况下,JaCoCo的覆盖数据文件以及覆盖率报告文件会在项目的target目录下生成,如下图
taget_site其中jacoco.exec为JaCoCo代码覆盖的原始数据文件,这个我们后面会详细讲解,site目录为JaCoCo默认生成的单测报告所在目录,默认情况下,JaCoCo会生成xml,csv以及html三个格式的报告

直接用浏览器打开index.html文件,既可看到对应代码的覆盖情况
jacoco_report

报告会对代码进行指令覆盖,分支覆盖,圈复杂度覆盖,行覆盖,方法覆盖,类覆盖进行统计,报告分四层,第一层为项目所有的包的汇总统计,点击对应的包名,能看到该包下面的各个类的覆盖统计情况,点击对应的类名,可以看到该类下面各方法的覆盖明细情况,再点击具体的方法名,既可通过代码高亮显示的方式显示该类的代码覆盖情况,如下图
code_line_coverage

从上面的报告来看,当前项目的单测整体指令覆盖率为25%,而行覆盖率也是25% (8-6)/8

 

本文来源:http://code.tianjuzi.com/article/jacoco_3

 

posted @ 2020-07-27 17:44  醉卧沙场你就笑吧  阅读(273)  评论(0)    收藏  举报