본문 바로가기

생각정리/Spring

JUnit5 예외 처리 테스트

강의 진행 중 JUnit 버전 간에 예외 처리 방식의 차이가 있다.

JUnit4에서의 예외 처리 테스트

JUnit4에서는 Test 애너테이션에 expected 속성을 이용해서 해당 테스트가 지정한 예외처리 발생에 따라 테스트 유무를 알 수 있는 방법을 사용해 예외 처리 테스트를 진행한다.

@Test(expected = IllegalStateException.class)
public void 중복_회원_예외() throws Exception {
    // given
    Member member1 = new Member();
    member1.setName("kim");

    Member member2 = new Member();
    member2.setName("kim");

    // when
    memberService.join(member1);
    memberService.join(member2); // 예외 발생

    // then
    fail("예외가 발생해야 한다."); // 가기전에 예외 처리로 성공한다.
}

 

JUnit5에서의 예외 처리 테스트

JUnit5에서는 Test에서 expected 속성이 사라져 사용할 수가 없다.

JUnit5에서는 assertThrows 메서드를 이용해서 예외 처리 테스트를 진행해야 했다.

assertThrows(예상 예외 처리 유형, 예외 처리가 발생할 로직);
@Test
    public void 중복_회원_예외() throws Exception {
        // given
        Member member1 = new Member();
        member1.setName("kim");

        Member member2 = new Member();
        member2.setName("kim");

        // when
        memberService.join(member1);
        IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));

        // then
        assertEquals(e.getMessage(), "이미 존재하는 회원입니다.");
    }

 

assertThrows를 이용해서 예외처리가 발생했을 경우 테스트를 성공시켜서 마무리할 수 도 있고, 발생한 예외처리를 받아 해당 메시지를 확인해서 정확한 예외 처리 메시지가 발생했는지도 확인을 할 수 있다.

 

'생각정리 > Spring' 카테고리의 다른 글

[JPA] 동시성 제어 테스트 코드 (H2)  (0) 2024.04.30
[JPA] 데이터 조회  (0) 2024.04.28
스프링 의존성 주입  (0) 2024.03.13
Spring과 Spring boot의 차이  (0) 2024.02.28