JUnit5学习笔记-Lee(滚动更新)

JUnit5基础总结:
1、由三大核心组成:Platform,Jupiter,Vintage
Platform主要用来支持命令行的方式来启动测试框架等,比如使用maven;
Jupiter则是用例编写和管理测试用例;
Vintage是用于兼容以往的JUnit版本的

2、安装需添加maven依赖:
具体参考课程ppt

3、常用测试用例注解和层级定义:
@Test:用于标识当前方法为一个测试用例
@DisplayName:定义用例别名,用于优化名称显示
@BeforeAll:用于标识在当前类中最先执行的方法,比BeforeEach标记的方法更早执行
@BeforeEach:用于标识需要在每个用例执行前都要执行的方法
@BAfterEach:用于标识需要在每个用例执行后都要执行的方法
@AfterAll:用于标识在当前类中最后执行的方法,比AfterEach标记的方法更后执行

Juint5参数化:
需添加依赖:junit-jupiter-params
1、如果要使用参数化,则@Test换成@ParameterizedTest,指定这是一个参数化的测试方法
2、指定是参数化方法后,还要指定参数化形式,参数化的形式有多种:
单参数:@ValueSource
多参数csv格式指定参数:@CsvSource
csv附件形式指定参数:@CsvFileSource
method形式指定参数:@MethodSource
自定义形式参数化:@ArgumentsSource
参数值为空:@EmptySource
参数值为null:@NullSourc
参数值为空或null:@Null and Empty Sources
枚举:@EnumSource

测试类里面可以通过引入OrderAnnotation这个类,然后测试用例里面通过@Order指定排序
比如:
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
//设定排序方法为注解指定排序
@TestMethodOrder(OrderAnnotation.class)
class OrderedTestsDemo {
@Test
@Order(1)
void nullValues() {
}
@Test
@Order(2)
void emptyValues() {
}
@Test
@Order(3)
void validValues() {
}
}

测试用例添加注解@RepeatedTest(10),代表这个测试用例要执行10次
@RepeatedTest(10)不要和@Test同时添加到一个测试方法,否则会造成多执行一次的情况

测试用例可以打标签,标签也可以自定义
打了标签后,有两种方法多种形式来执行指定xx标签的用例
1、可以在pom.xml中指定要执行或者不执行的标签;
2、通过mvn命令执行而是用例的指定要执行或者不执行的标签;
# 执行 没有test 标签的用例
mvn clean test -Dgroups="!test"
# 执行 dev 或 test 标签的用例
mvn clean test -Dgroups=“dev|test”
# 执行既有 dev 也有 test 标签的用例
mvn clean test -Dgroups=“dev&test”
3、注意,如果pom.xm里面指定了标签执行的细节,那么mvn命令执行测试用例的时候如果指定了不同的标签,那么pom.xml里面的配置更优先

可以使用@Disabled指定测试类或者测试方法被禁用
需要注意的是,如果测试类被@Disabled标识了,那么只有通过使用maven构建的形式执行测试用例后才能体现被禁用的效果,直接在Idea里面执行是不能表现出来的