오늘은 테스트 코드를 작성하던 도중 메소드들의 실행순서가 보장되지 않아서

문제가 되었었고 어떻게 해결했는지 공유하기 위해서 글을 작성한다.

 

내 경우에는 회원가입 테스트를 진행하고, 

로그인 테스트를 진행한 뒤 계정을 삭제하는 테스트 플로우를 세웠는데,

이게 회원가입도 하기 전에 로그인 시도를 해버려서 오류가 났다.

 

그래서 스프링부트 테스트 코드의 메소드별 실행 순서를 보장해주는 방법을 몇가지 찾았는데,

내가 선택했던 가장 직관적이였던 방법을 공유하겠다.

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

사용 방법은 아주 간단하다. 아래 예제코드처럼 테스트 클래스 위에 이 어노테이션을 추가해주면 된다.

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoginControllerTest {
}

그리고 메소드별로 위에 @Order(순서) 어노테이션을 붙여주면 된다.

    @Test
    @Order(5)
    void fifthTest() {
        System.out.println("fifthTest");
    }

    @Test
    @Order(3)
    void thirdTest() {
        System.out.println("thirdTest");
    }

    @Test
    @Order(4)
    void fourthTest() {
        System.out.println("fourthTest");
    }

    @Test
    @Order(1)
    void firstTest() {
        System.out.println("firstTest");
    }

    @Test
    @Order(2)
    void secondTest() {
        System.out.println("secondTest");
    }

이런식으로 순서를 숫자로 보기 쉽게 정할 수 있다.

 

이외에도 몇가지 방법이 더 있긴한데.. 난 이게 제일 직관적이였다.

반응형
복사했습니다!