본문 바로가기
IT/Java

JUNIT 테스트 메서드 순서 정하기

by 성준하이 2023. 9. 28.
반응형

이전 포스팅에서 JUNIT 관련해서 글을 다룬적이 있다.

 

자세한 내용은 아래 참고 포스팅 참고 바란다.

 

사용법에 대해서는 아래 참고 포스팅이 있고.

여러개의 테스트 메서드를 작성했을경우 테스트에 순서를 지정하는 법에 대해서 다루려고 한다.

 

먼저 샘플 소스를 보면 아래와 같다.

public class TestOrder {

     @Test
     public void testOrder1() {
          System.out.println("11");
          assertThat(1000).isEqualTo(1000);
     }
     @Test
     public void testOrder2() {
          System.out.println("22");
          assertThat(100).isEqualTo(100);
     }
     @Test
     public void testOrder3() {
          System.out.println("33");
          assertThat(10).isEqualTo(10);
     }
     @Test
     public void testOrder4() {
          System.out.println("44");
          assertThat(1).isEqualTo(1);
     }
}

testOrder1 부터 testOrder4 까지 만들었다.

 

이들에 순서를 지정하기 위해서 TestMethodOrder 를 사용한다. 인자값은 아래를 참고 바란다.

 

@TestMethodOrder(MethodOrderer.MethodName.class)

메서드 이름을 기준으로 정렬해서 순서를 지정한다.

예제는 아래와 같다.

@TestMethodOrder(MethodOrderer.MethodName.class)
public class TestOrder {

     @Test
     public void testOrder3() {
          System.out.println("33");
          assertThat(10).isEqualTo(10);
     }
     @Test
     public void testOrder4() {
          System.out.println("44");
          assertThat(1).isEqualTo(1);
     }
     @Test
     public void testOrder1() {
          System.out.println("11");
          assertThat(1000).isEqualTo(1000);
     }
     @Test
     public void testOrder2() {
          System.out.println("22");
          assertThat(100).isEqualTo(100);
     }
}

메서드 순서는 3-4-1-2 이지만 결과는 아래와 같다.

@TestMethodOrder(MethodOrderer.MethodName.class)

디스플레이에 보여지는 이름을 DisplayName 어노테이션으로 지정하게 되는데 이 보여지는 이름을 기준으로 정렬해서 순서를 지정한다.

예제는 아래와 같다.

@TestMethodOrder(MethodOrderer.DisplayName.class)
public class TestOrder {


     @DisplayName("3")
     @Test
     public void testOrder3() {
          System.out.println("33");
          assertThat(10).isEqualTo(10);
     }


     @DisplayName("4")
     @Test
     public void testOrder4() {
          System.out.println("44");
          assertThat(1).isEqualTo(1);
     }

     @DisplayName("1")
     @Test
     public void testOrder1() {
          System.out.println("11");
          assertThat(1000).isEqualTo(1000);
     }

     @DisplayName("2")
     @Test
     public void testOrder2() {
          System.out.println("22");
          assertThat(100).isEqualTo(100);
     }
}

메서드 순서는 3-4-1-2 이지만 결과는 아래와 같다.

 

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

Order 어노테이션을 달아서 그 순서대로 순서를 지정한다.

예제는 아래와 같다.

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class TestOrder {

     @Order(3)
     @Test
     public void testOrder3() {
          System.out.println("33");
          assertThat(10).isEqualTo(10);
     }


     @Order(4)
     @Test
     public void testOrder4() {
          System.out.println("44");
          assertThat(1).isEqualTo(1);
     }

     @Order(1)
     @Test
     public void testOrder1() {
          System.out.println("11");
          assertThat(1000).isEqualTo(1000);
     }

     @Order(2)
     @Test
     public void testOrder2() {
          System.out.println("22");
          assertThat(100).isEqualTo(100);
     }
}

메서드 순서는 3-4-1-2 이지만 결과는 아래와 같다.

 

그 밖에 


@TestMethodOrder(MethodOrderer.Random.class)

-> 랜덤으로 순서 시정

가 있고

커스텀으로 구현을 할수도 있다.

 


참고 포스팅

https://thenicesj.tistory.com/84

 

JUnit 이란? / 사용법

JUnit이라고 쓰고 단위테스트라고 저는 읽는데요. 혹시 알고 계신가요? 이클립스를 사용하시는 분들이라면 많이 보셨을것 같은데 (사실 intelliJ는 제가 사용을 안해봐서 모릅니다 ㅠㅠ) 간단하게

thenicesj.tistory.com

 

반응형

'IT > Java' 카테고리의 다른 글

[eclipse] 디버깅 하기  (46) 2023.10.01
추상클래스와 인터페이스 차이점 (abstract VS interface)  (34) 2023.09.29
implements, extends 실 사용 예제  (48) 2023.09.27
Inner Class(이너클래스, 내부클래스)  (33) 2023.09.24
@Resource 관련  (58) 2023.09.22

댓글