사실 특별한 assert나 예외 검증이 없이 단순히 메서드 호출이 성공적으로 이루어졌는지만 확인해도 예외가 발생하지 않음을 알 수 있죠.
하지만 명시적으로 예외가 발생하지 않음을 확인하고 싶다면 어떻게 할 수 있을까요?
AssertJ 라이브러리에서 예외가 발생하지 않음을 확인하는 방법으로 assertThatCode 와 doesNotThrowAnyException 를 사용할 수 있습니다.
assertThatCode 는 코드 블록을 실행하고, doesNotThrowAnyException 을 통해 예외가 발생하지 않음을 검증합니다.
import static org.assertj.core.api.Assertions.assertThatCode;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
public void testDivide_NoException() {
// Given
Calculator calculator = new Calculator();
// When & Then
assertThatCode(() -> calculator.divide(10, 2))
.doesNotThrowAnyException();
}
}
물론 JUnit5 의 assertDoesNotThrow 를 사용해서 똑같이 검증을 할 수 있습니다.
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
public class CalculatorTest {
@Test
public void testDivide_NoException() {
// Given
Calculator calculator = new Calculator();
// When & Then
assertDoesNotThrow(() -> calculator.divide(10, 2));
}
}
doesNotThrowAnyException() 와 assertDoesNotThrow() 는 모두 예외가 발생하지 않음을 확인하는 데 사용됩니다.