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)

 

posted @ 2020-11-22 17:54  Sheerlyn  阅读(994)  评论(0编辑  收藏  举报