Spring Boot/JUnit5

[JUnit5] 테스트 순서

수수한개발자 2022. 7. 22.
728x90

테스트의 순서는 정해져 있지 않습니다.

하지만 작성한 순서대로 결과 값이 뜨기 떄문에 순서가 적은 순서대로 나오는것처럼 보이는데 이것을 믿고 작성한 순서대로 테스트가 실행된다! 이렇게 믿으면 안됩니다.

왜냐하면 저번글에 작성했던 테스트 클래스의 인스턴스는 기본전략이 테스트메소드마다 생성하기때문에 그런데요.

이것의 이유가 의존성을 낮추고 다른 테스트의 영향을 안 미치게 하기위해서, 즉 각각의 테스트 메소드는 독립적으로 실행되어야 테스트가 잘되는지 알수있기 때문입니다.

 

하지만 내가 원하는 순서대로 테스트를 작성하고 싶을 때도 있습니다.

시라니오 테스트, 회원가입을 하고 로그인을하고 글을작성하고 닉네임을 변경하고 등등 유스케이스를 테스트하는경우 이 모든 것들이 스테이트 풀하고 상태정보가 유지되게 데이터를 공유하려면 테스트 인스턴스를 공유해야합니다.

그럴 때 사용하는것이

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

입니다. 

 

  • Alphanumeric
  • OrderAnnoation
  • Random

세개의 구현체를 제공합니다.

저는 OrderAnnotation을 사용하였습니다.

 

@Order(2)
@FastTest
@Test
@DisplayName("스터디 만들기 ╯°□°)╯ fast")
void create_new_study() {
    System.out.println(this);
    System.out.println(value++);
    Study actual = new Study(10);
    assertEquals(actual.getLimit(), 10);
    assertThat(actual.getLimit()).isGreaterThan(0);
}

@Order(1)
@SlowTest
@DisplayName("스터디 만들기 \uD83D\uDe31 slow")
@Test
void create_new_study_again() {
    System.out.println(this);
    System.out.println(value++);
    System.out.println("create1");
}

 

기존에는 fast가 먼저 결과값이 나왔지만 현재는 slow가 Order(1) 로 낮은순위가 우선순위 이기 때문에 먼저 실행되는 모습입니다.

728x90

'Spring Boot > JUnit5' 카테고리의 다른 글

[JUnit5] JUnit 5: 확장 모델  (0) 2022.07.22
[Junit5] junit-platform.properties  (0) 2022.07.22
[JUnit5] 테스트 인스턴스  (0) 2022.07.22
[JUint5] 테스트 반복하기  (0) 2022.07.22
[JUnit5] Assumptions  (0) 2022.07.21

댓글