MockMVC
忽略了@Order
注释的顺序,顺便说一句,按字母顺序命名它们,当第二个方法被命名为test2_b
时,该方法成为第二个,应该按原样执行,但在这种情况下,重命名到 test2
它是最后一个被执行的,尽管它应该是第二个被执行的:
package com.javainuse.boot3security.test;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import com.javainuse.boot3security.repository.DadosPessoaisRepository;
@SpringBootTest
@AutoConfigureMockMvc
class ClassTest {
@Autowired
MockMvc mockMvc;
@MockBean
private DadosPessoaisRepository dadosPessoaisRepository;
@Order(1)
@Test
public void test1_a() throws Exception {
System.out.println("Test1");
}
@Order(2)
@Test
public void test2() throws Exception {
System.out.println("Test2");
}
@Order(3)
@Test
public void test3_c() throws Exception {
System.out.println("Test3");
}
@Order(4)
@Test
public void test4_d() throws Exception {
System.out.println("Test4");
}
}
输出:
Test1
Test3
Test4
Test2
仅在测试方法上使用 @Order 注解是行不通的。您必须使用特定的 TestMethodOrder 注释 Test 类:
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.TestMethodOrder;
@SpringBootTest
@AutoConfigureMockMvc
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class ClassTest {
@Order(1)
@Test
public void test1_a() throws Exception {
System.out.println("Test1");
}
}
但请记住,执行测试命令并不是一个好的做法。