一、添加依赖
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.9.1</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.9.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
二、常用注解
1.@Test
表明一个测试方法
@Test
void contextLoads() {
}
2.@BeforeAll
在所有测试方法执行之前执行的方法,且只执行一次
注解的方法必须是静态方法,否则它将引发运行时错误。
@BeforeAll
public static void test01(){
System.out.println("BeforeAll");
}
3.@AfterAll
在所有测试方法执行之后执行的方法,且只执行一次
注解的方法必须是静态方法,否则它将引发运行时错误。
@AfterAll
public static void test03(){
System.out.println("AfterAll ");
}
4.@BeforeEach
在每个测试方法执行之前都会执行的方法
@BeforeEach
public void test02(){
System.out.println("BeforeEach");
}
5.@AfterEach
在每个测试方法执行之后都会执行的方法
@AfterEach
public void test04(){
System.out.println("AfterEach");
}
6.@Order
决定测试用例的执行顺序 越小越优先
三、参数化
1.单参数
@ParameterizedTest不能和@Test修饰一个方法
@ParameterizedTest
@ValueSource(ints = {1,2,3})
void test06(int num){
System.out.println(num);
}
2.多参数
@ParameterizedTest
@CsvSource({"1,2","3,4"})
void test07(String num1,int num2){
System.out.println(num1+" "+num2);
}
3.方法
@ParameterizedTest
@MethodSource("hello")
void test07(int num,String name){
System.out.println(num+" "+ name);
}
public static Stream<Arguments> hello(){
return Stream.of(Arguments.arguments("1,张三"));
}
4.多参数CSV文件
@ParameterizedTest
@CsvFileSource(resources = "01.CSV")
public void test08(){
}
四、断言
断言就是专门用来验证输出和期望是否一致的一个工具
@ParameterizedTest
@ValueSource(ints ={1})
public void test01(int num1){
int a=0;
a=num1+2;
Assertions.assertEquals(3,a);
Assertions.assertNotEquals(1,a);
Assertions.assertNull(a);
Assertions.assertNotNull(a);
}
1.断言相等
assertEquals(expected, actual, message)
如果预期值 expected 不等于实际返回值 actual ,则断言失败。
2.断言不相等
assertNotEquals(expected, actual, message)
如果预期值 expected 等于实际返回值 actual ,则断言失败。
3.断言为空
assertNull(actual, message) 如果 actual 不是 null ,则断言失败。
4.断言不为空
assertNotNull(actual, message) 如果 actual 是 null ,则断言失败。
五、测试套件
创建一个测试套件类,里面指定好可以执行哪些测试类
创建一个测试套件类,并在该类上使用@Suite注解。然后,使用@SelectClasses或@SelectPackages指定要包含在测试套件中的类或包。
@Suite
@SelectClasses({test02.class,DemoApplication.class})
public class test01 {
}
@Suite
@SelectPackages(value = "demo2,com.example.demo")
public class test01 {
}