? @Test:标记一个测试用例
? @Disable:忽略此条测试用例
? @BeforeAll:在所有用例执行前先执行
? @AfterAll:在所有用例执行后再执行
? @BefortEach :在每个测试用例执行前执行
? @AfterEach:在每个测试用例执行后执行
public class Test1 {
@Test
public void test01(){
System.out.println("这是test01中的数据");
}
@Test
void test02(){
System.out.println("这是test02中的数据");
}
@Disabled
void test03(){
System.out.println("这是test03中的数据");
}
@AfterAll
static void test04(){
System.out.println("这是afterAll的内容");
}
@BeforeAll
static void Test05(){
System.out.println("这是beforeAll的内容");
}
@BeforeEach
void test06(){
System.out.println("这是BeforeEach的内容");
}
@AfterEach
void test07(){
System.out.println("这是AfterEach的内容");
}
}
执行结果:
此时也是要导入新的依赖:
Maven Repository: org.junit.jupiter ? junit-jupiter-params ? 5.9.3 (mvnrepository.com)
@ParameterizedTest
@ValueSource(ints = {1,2,3})
void test01(int n){
System.out.println(n);
}
@ParameterizedTest
@ValueSource(strings ="1")
void test02(String s){
System.out.println(s);
}
?
/* 张三,李四
张三2,李四2
张三3,李四3*/
@ParameterizedTest
//在resources中创建一个同名文件,文件每一行一次测试的内容,测试用例可根据参数类型自动匹配
@CsvFileSource(resources = "/name.csv")
void test03(String n,String s){
System.out.println(n+","+s);
}
@ParameterizedTest
//空字符串使用''来传递
@CsvSource({"1,张三","2,李四","3,''"})
void test05(int n,String name){
System.out.println(n+","+name);
}
public static Stream<Arguments> generator(){
return Stream.of(Arguments.arguments(1,"张三"),Arguments.arguments(2,"李四"),Arguments.arguments(3,"王五"));
}
// @Test
// @Test不能与@ParameterizedTest一同使用,两者会产生冲突
@ParameterizedTest
@MethodSource("generator")
void Test04(int num,String name){
System.out.println(num+" "+name);
}
在项目中,测试的各方法的执行顺序不是自上而下的
/*指定每个方法的执行顺序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)*/
//随机执行,但是仍可以通过@Order来执行
@TestMethodOrder(MethodOrderer.Random.class)
public class JOrder {
//@Order(2)
@Test
void B(){
System.out.println("b");
}
//@Order(1)
@Test
void A() {
System.out.println("a");
}
//@Order(3)
@Test
void test01(){
System.out.println("test01");
}
//@Order(4)
@Test
void test02(){
System.out.println("test02");
}
}
@ParameterizedTest
@ValueSource(strings ="1")
void test02(String s){
// Assertions.assertEquals("1",s);
// Assertions.assertNotEquals("2",s);
String str=null;
Assertions.assertNull(str);
/* String str="string";
Assertions.assertNotNull(str,);*/
}
依赖:
<!-- 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>
<scope>test</scope>
</dependency>
<!--suite 需要engine-->
<!-- 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>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite-api</artifactId>
<version>1.9.1</version>
</dependency>
package junit_Sele.pakage1;
import org.junit.jupiter.api.Test;
public class Test1 {
@Test
void test01(){
System.out.println("junit_Sele/pakage1/test1");
}
}
package junit_Sele.pakage1;
import org.junit.jupiter.api.Test;
public class Test2 {
@Test
public void Test2(){
System.out.println("junit_Sele/pakage1/test2");
}
}
package junit_Sele.pakage2;
import org.junit.jupiter.api.Test;
public class Test1 {
@Test
void test01(){
System.out.println("junit_Sele/pakage2");
}
}
@Suite
//指定同一个包中的不同类运行的顺序
//@SelectClasses({JAssert.class, JOrder.class,Para.class})
//指定一个包中不同类运行的顺序
@SelectPackages(value = {"junit_Sele.pakage1", "junit_Sele.pakage2"})
//指定一个包的同时指定包内的类的运行顺序
@SelectClasses({junit_Sele.pakage1.Test1.class,junit_Sele.pakage1.Test2.class})
public class RunSuite {
}