Junit5测试顺序
环境 java15+maven3.8+idea2022.2
- 学习 junit5用例的执行书序
- 学习 junit5 用例的重复执行
测试顺序:
下面是如何指定测试用例的方法执行顺序:
- 测试用例的执行顺序可以使用注解OrderAnnotation来修饰类,并使用@Order来修饰方法指定顺序
@TestMethodOrder(OrderAnnotation.class)
@TestMethodOrder(OrderAnnotation.class)//该注解使用在类上面
class Demotest{
@Test
@Order(1)//该注解使用在方法上
void test{
System.out.Println("1")
}
@Test
@Order(2)
void test2{
System.out.Println("2")
}
}
- 使用@DisplayName ,根据displayname的AscII码排序
@@TestMethodOrder(MethodOrderer.Display.class)
class Demotest{
@Test
@DisplayName("1")
void test{
System.out.Println("1")
}
@Test
@DisplayName("2")
void test2{
System.out.Println("2")
}
}
- 使用@Random 随机排序,@TestMethodOrder(MethodOrderer.Random.class)
@TestMethodOrder(MethodOrderer.Random.class)//该注解使用在类上面
class Demotest{
@Test
void test{
System.out.Println("1")
}
@Test
void test2{
System.out.Println("2")
}
}
- 使用@MethodName ,根据方法的名称排序使用注解@TestMethodOrder(MethodOrderer.MethodName.class)
@TestMethodOrder(MethodOrderer.MethodName.class)//该注解使用在类上面
class Demotest{
@Test
void test{
System.out.Println("1")
}
@Test
void test2{
System.out.Println("2")
}
}
方法可以指定执行顺序,类也是可以的:
- 与方法执行的排序类似也是 根据order注解排序,区别的是,方法使用的TestMethodOrder,类的排序使用TestClassOrder
@TestClassOrder(ClassOrderer.Annotation.class)
public class Demotest{
@Nested
@Order(1)
class OderTest1{
@Test
void test{
System.out.Println("1")
}
}
@Nested
@Order(2)
class OrderTest2{
@Test
void test2{
System.out.Println("2")
}
}
}
- DisplayName排序
@TestClassOrder(ClassOrderer.DisplayName.class)
public class Demotest{
@Nested
@DisplayName("1")
class OderTest1{
@Test
void test{
System.out.Println("1")
}
}
@Nested
@DisplayName("2")
class OrderTest2{
@Test
void test2{
System.out.Println("2")
}
}
}
- 随机排序
@TestClassOrder(ClassOrderer.Random.class)
public class Demotest{
@Nested
class OderTest1{
@Test
void test{
System.out.Println("1")
}
}
@Nested
class OrderTest2{
@Test
void test2{
System.out.Println("2")
}
}
}
- 使用类名排序
@TestClassOrder(ClassOrderer.ClassName.class)
public class Demotest{
@Nested
class OderTest1{
@Test
void test{
System.out.Println("1")
}
}
@Nested
class OrderTest2{
@Test
void test2{
System.out.Println("2")
}
}
}
使用配置文件排序,由于在每一个方法或者类上加注解其实是很麻烦的,也容易出错,因此可以使用配置文件的方式:
在resources目录下,创建 junit-platform.properties配置文件,在配置文件中写入下面的内容,这些是默认执行顺序,优先级低于在代码中写注解的形式,如果在代码中使用注解指定了执行顺序,则按照代码中指定的顺序
重复测试:
这里学习 如何使测试用例 重复执行
使用注解@RepeatedTest()来声明这个方法的执行次数,并且需要注意,如果该注解和@Test一起使用会比预定执行次数多执行一次
public void DemoTest{
//@Test
@RepeatedTest(3)//表示这个方法将被执行3次
void test1(){
System.out.Println("test")
}
}
输出结果的是:repetition 当前执行次数(currentRepetition) of 总次数(totalRepetitions)
@RepeatedTest的注解,还可以指定对应测测试用例的名称,也就是自定义输出结果的名称,格式:
@RepeatedTest(value = 3,name= "{disiplayName}{currentRepetition}/{totalRepetitions})
public void DemoTest{
//@Test
@RepeatedTest(value = 3,name= "repetition111 {currentRepetition}/{totalRepetitions}")
void test1(){
System.out.Println("test")
}
}
输出结果:可以看到这个输出的名称变成上面自定义的了
这个displayName的样式还有多种,具体如下,可以指定输出的名称为 方法名等