사실 특별한 assert예외 검증이 없이 단순히 메서드 호출이 성공적으로 이루어졌는지만 확인해도 예외가 발생하지 않음을 알 수 있죠.

하지만 명시적으로 예외가 발생하지 않음을 확인하고 싶다면 어떻게 할 수 있을까요?

AssertJ에서의 예외가 발생하지 않음을 검증

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();
    }
}
  1. assertThatCode(Runnable code)
  2. doesNotThrowAnyException()

JUnit5에서의 예외가 발생하지 않음을 검증

물론 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() 는 모두 예외가 발생하지 않음을 확인하는 데 사용됩니다.