SpringBoot 单元测试
什么是单元测试
我们开发了很多代码,有时候我们会通过 @Test
的这种方式去测试我们写的某些方法是否正确,那么我们写的这些测试都称之为单元测试
一般的,每个类的每个方法都尽量做一次单元测试,并将他们留在 test
目录
什么是单元测试通过率
举例:我们通过 @Test
写了 10
个方法测试,如果执行成功了 5
个,那么通过率为 50%
① Maven
配置单元测试通过率
<build>
<plugins>
<!-- 单元测试通过率 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>false</skipTests>
<!--suppress UnresolvedMavenProperty -->
<argLine>-Dfile.encoding=UTF-8 ${jacocoArgLine}</argLine>
<includes>
<!-- 用于指定对哪些类进行单元测试通过率的统计 -->
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
② 编写好测试用例后,执行 mvn install
后,在项目的路径下的 target
目录中会生成以下目录
什么是单元测试覆盖率
对我们已经写好的代码编写测试用例,执行用例后会测试测试用例覆盖了我们代码的哪些分支,将这些情况进行汇总
① Maven
配置单元测试覆盖率
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacocoArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
② 编写目标代码和测试用例
③ 执行 mvn install
后,在项目的路径下的 target
目录中会生成报告
④ 打开 index.xml
查看代码覆盖情况
⑤ 增加对分支代码的覆盖
总结:如果为了提高代码覆盖率,那么就需要把每个分支的情况都考虑到然后测试
对于可能要调用数据库或者其他服务的测试用例,可以参考该博客
https://cloud.tencent.com/developer/article/1862618