상세 컨텐츠

본문 제목

TIL: JUnit

Programming/TIL

by 홍잭슨 2021. 12. 14. 09:25

본문

JUnit 기본 어노테이션

@Test
//    @Disabled 필요하지 않은 경우 Disabled 어노테이션으로 구동되지 않게 할 수 있다
    void create(){
        // 기존에 public만 가능했지만
        // 5.0 부터는 리플렉션을 통해 상관없이 만들었음
        Order order = new Order();
        assertNotNull(order);
    }

    @BeforeAll //이 안에 있는 여러 테스트가 모두 실행이 될 때 딱 한번 전에 실행이 됨
    static void beforeAll(){ //static void로만 구현할 수 있다
        System.out.println("before all");
    }

    @AfterAll
    static void afterAll(){
        System.out.println("after all");
    }

    @AfterEach
    void afterEach(){
        System.out.println("after each");
    }

    @BeforeEach
    void beforeEach(){
        System.out.println("before each");
    }

테스트 이름 표기하기

  • 보통 테스트를 할 경우 왼쪽 하단에 테스트 유닛이 나오는데 원하는 문자열이 출력되기를 바랄 경우
  • @DisplayNameGeneration
    • Display 전략을 명시해줌 - ex) _ = ' ' 으로 표시
  • @DisplayName (추천)
    • 하나에 단위에 이름을 할당해줌
    • 이모티콘도 가능

Assertion

  • 우리가 테스트에서 검증하고 싶은 내용을 확인하는 API
  • assertEquals(expected,actual,{message} - lamda식 가능)
    • ex) assertEquals(Status.DRAFT, order.getStatus, () → "처음 상태는 DRAFT")
    • 뒤에 람다식을 쓸 경우 필요한 경우에만 String 생성함으로 효율적
  • assertNotNull - null 인지 확인
  • assertTrue - true인지 확인
    • ex) assertTrue(order.getLimit() > 0, "인원은 0보다 커야함")
  • assertAll - 위의 내용들을 전부 다 파라미터로 받아서 구현 가능
    • 병렬적으로 파라미터로 들어온 assert들을 전부 다 실행함 (와 혁명적이네)
  • assertThrows - 예외가 발생하는지 확인
  • // Example 
    assertThrows(IllegalArgumentException.class, () → new Study(-1)); 
    assertEquals("limit은 0보다 커야 한다.", exception.getMessage());
    assertTimeout - 지정된 시간 안에 끝나는지 확인
  • // Example 
    assertTimeout(Duration.ofMillis(100), () -> { new Study(10); Thread.sleep(300); })
  • assertTimeoutPreemptively - timeout이 날 경우 지정된 시간이 넘어가면 바로 종료시킴
    • 주의점 : 테스트에서 스프링 Transactional이 먹히지 않을 수 있음 (DB 롤백이 어려울 수 있다)
    • assertTimeout이 좀 더 안전하다

'Programming > TIL' 카테고리의 다른 글

TIL : JUnit, Mockito  (0) 2021.12.20
TIL : JUnit - 테스트 순서, Properties  (0) 2021.12.17
TIL : JUnit  (0) 2021.12.15
TIL: Anotation Processor  (0) 2021.12.13
TIL: 리플렉션, 다이나믹 프록시  (0) 2021.12.12

관련글 더보기