MockMVC 忽略顺序注释和字母顺序方法顺序工作很奇怪

问题描述 投票:0回答:1

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
spring mockito junit5 spring-boot-test mockmvc
1个回答
0
投票

仅在测试方法上使用 @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");    
    }

}

但请记住,执行测试命令并不是一个好的做法。

© www.soinside.com 2019 - 2024. All rights reserved.