본 글은 assertThrows 메서드를 공부한 지식을 정리한 글입니다.
서론
JPA에서 @Vesion 어노테이션을 사용하여 낙관적 락을 구현하고, 낙관적 락을 통한 동시성 제어를 확인했습니다.
[JPA] JPA에서 낙관적 락(Optimistic Locking) 구현하기 (@Version)
서론낙관적 락은 데이터 충돌이 드물 것이라고 가정하고, 데이터를 수정할 때만 충돌을 검사합니다. 트랜잭션이 데이터를 수정하기 전까지는 락을 걸지 않고, 수정 시점에 데이터가 변경되
pixx.tistory.com
Test클래스에서 assertThrows()메서드로 예외를 손쉽게 처리 했는데, 코드 중 assertThrows() 메서드에 대해서 정리하고자 합니다.
assertThorws란❓
assertThrows()는 JUnit 5의 Assertions 클래스에서 제공하는 메서드로, 주어진 코드 블록이 특정 예외를 발생시키는지를 검증하는 데 사용됩니다.
assertThrows() 메서드를 사용하면 예외 발생 여부를 간편하게 테스트할 수 있으며, 코드의 신뢰성을 높이는 데 도움이 됩니다.
기본 사용법
assertThrows() 메서드는 두 개의 매개변수를 받습니다.
- 첫 번째 매개변수
- 예상되는 예외 클래스 (e.g., IllegalArgumentException.class).
- 두 번째 매개변수
- 예외를 발생시킬 코드 블록 (람다 표현식).
예제 코드
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;
public class ExampleTest {
@Test
void testException() {
// 예외를 발생시키는 코드 블록을 전달합니다.
assertThrows(IllegalArgumentException.class, () -> {
throw new IllegalArgumentException("Invalid argument!");
});
}
}
위 코드에서 assertThrows()는 IllegalArgumentException이 발생하는지 테스트합니다. 예외가 발생하지 않거나 다른 예외가 발생하면 테스트는 실패합니다.
assertThorws의 장점
- 명확한 테스트 의도
- 예외 발생 여부를 명확히 테스트할 수 있습니다.
- 코드 가독성 향상
- 예외 테스트가 간결하고 읽기 쉬워집니다.
- 정확한 검증
- 예외의 세부 사항까지 검증하여 더 정확한 테스트가 가능합니다.
JUnit 5의 assertThrows() 메서드는 예외 처리를 효과적으로 테스트할 수 있는 유용한 도구입니다.
간단하게 예외가 발생하는지 확인하고, 발생한 예외의 세부 사항까지 검증할 수 있습니다. 이를 통해 테스트 코드의 신뢰성을 높이고, 더 견고한 애플리케이션을 개발할 수 있습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.08.24 - 외래 키 주인❗️ (1) | 2024.08.24 |
---|---|
[TIL, 일일회고] 2024.08.23 - JPA Entity 클래스 간의 참조: 의존성 주입이 아닌 FK 관계를 위한 설계 (0) | 2024.08.23 |
[TIL, 일일 회고] 2024.08.21 - 비관적 락(Pessimistic Lock)으로도 업데이트 손실이 발생하는 이유 (0) | 2024.08.21 |
[TIL, 일일 회고] 2024.08.20 - Referer헤더란❓ (0) | 2024.08.20 |
[TIL, 일일 회고] 2024.08.19 - 출처란 무엇일까❓ (0) | 2024.08.19 |