상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - JUnit에서 예외를 테스트하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
JUnit에서 예외를 테스트하는 방법은 여러 가지가 있으며, JUnit 버전과 상황에 따라 적합한 방식을 선택할 수 있습니다. 대표적으로 JUnit 4와 JUnit 5에서 주로 사용하는 방법을 중심으로 설명드리겠습니다. 1. @Test의 expected 속성 사용 (JUnit 4) JUnit 4에서는 @Test 어노테이션에 expected 속성을 지정하여 특정 예외가 발생하는지 검사할 수 있습니다. 이 방법은 가장 간단하지만, 예외가 발생하는 전체 범위에 대해 검증하기 때문에 예외가 발생하는 위치나 메시지까지 세밀하게 확인할 수는 없습니다. ```java @Test(expected = IllegalArgumentException.class) public void testException() { // 예외를 발생시키는 코드 myObject.methodThatThrowsException(); } ``` 이 코드는 IllegalArgumentException이 발생하지 않으면 테스트가 실패합니다. 2. try-catch 블록과 fail() 메서드 이용하기 (JUnit 4, 5 공통) 좀 더 세밀한 검증이 필요할 때, 예외가 발생하는 위치를 명확히 하고 메시지까지 확인하려면 try-catch 블록을 쓸 수 있습니다. ```java @Test public void testException() { try { myObject.methodThatThrowsException(); fail("예외가 발생해야 합니다."); } catch (IllegalArgumentException e) { assertEquals("잘못된 인자입니다.", e.getMessage()); } } ``` 이 방법은 예외 객체를 캡쳐하여 메시지나 기타 속성을 직접 검증 가능하지만, 코드가 장황해지는 단점이 있습니다. 3. Assert.assertThrows 메서드 사용 (JUnit 5) JUnit 5부터는 assertThrows 메서드를 통해 보다 간단하고 명확하게 예외를 테스트할 수 있습니다. ```java @Test void testException() { IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class, () -> { myObject.methodThatThrowsException(); }); assertEquals("잘못된 인자입니다.", thrown.getMessage()); } ``` 이 방법은 람다 표현식으로 예외 발생 코드를 전달하고, 발생한 예외 객체를 반환받아 메시지나 상태를 검증할 수 있어 매우 권장됩니다. 4. ExpectedException 규칙 사용 (JUnit 4) JUnit 4에서는 ExpectedException 규칙을 통해 예외 타입, 메시지를 더 유연하게 검증할 수도 있습니다. ```java @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testException() { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("잘못된 인자입니다."); myObject.methodThatThrowsException(); } ``` 이 방법은 예외가 발생하기 전에 기대하는 예외와 메시지를 선언하고, 실제 예외가 발생하는지 확인하는 방식입니다. --- 요약하자면, - JUnit 4에서는 `@Test(expected=예외클래스.class)`를 간단히 쓸 수 있으나, 메시지 검증이 어렵고, 발생 위치를 정확히 특정하기 어려움 - 예외 메시지까지 검증하거나 특정 부분에서 발생했는지 확인하려면 try-catch + fail 또는 ExpectedException 규칙을 사용 - JUnit 5에서는 `assertThrows()`가 가장 직관적이고 강력하며, 예외 객체의 상세 정보도 확인 가능 따라서 테스트 환경에 맞춰 적절한 방식을 선택해 예외 테스트를 구현하는 것이 좋습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기