JaCoCo入门使用(基于Maven+TestNG)
参考链接:
* https://www.cnblogs.com/fnng/p/7923314.html
* https://www.jacoco.org/
* https://www.eclemma.org/jacoco/
* https://ningyu1.github.io/site/post/77-jenkins-sonarqube-jacoco-junit/
一、Jacoco简介:
1. JaCoCo是一个开源的覆盖率工具,针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。
2. 很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins等。
3. JaCoCo包含了多种尺度的覆盖率计数器
二、Maven工程安装Jacocco
只需要引入Jacoco的jar包即可
<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.11</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.9</version>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>
三、代码实例验证
1. 创建1个maven工程:
2. 创建被测试类:
public class Count {
    public int add(int x, int y){
        return x + y;
    }
    public int sub(int x, int y){
        return x - y;
    }
}
3. 创建测试类:
import org.testng.Assert;
import org.testng.annotations.Test;
public class CountTest {
    @Test
    public void testAdd(){
        Count count = new Count();
        int result = count.add(3,3);
        Assert.assertEquals(result, 6);
    }
}
四、执行测试代码
* 通过TestNG单元测试框架来运行测试用例,切换到jacocoTest项目根目录下,执行“mvn install”命令。
五、查看覆盖率报告
1. 切换到项目下的“\target\site\jacoco\”目录,打开index.html文件。

2.覆盖率报告字段说明:
1. 类覆盖(classes):度量计算class类文件是否被执行
2. 方法覆盖(non-abstract methods):度量if和switch语句的分支覆盖情况,计算一个方法里面的。
3. 分支覆盖(Branches,C1coverage):包括所有的if和switch语句,这个度量计算一个方法里面的总分支数,确定执行和不执行的分支数量
4. 行覆盖(Lines):度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。
5. 指令级覆盖(Instructions,C0coverage):计数单元是单个java二进制代码指令,二进制代码指令的覆盖率
6. 圈复杂度(CyclomaticComplexity)
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号