강의 진행 중 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 |