>Java >java지도 시간 >JUnit 테스트에서 예외를 효과적으로 어설션하는 방법은 무엇입니까?

JUnit 테스트에서 예외를 효과적으로 어설션하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-20 07:51:12923검색

How to Effectively Assert Exceptions in JUnit Tests?

JUnit 테스트에서 예외 어설션 실행

코드 실행 중에 특정 예외가 발생했다고 어설션하는 것은 JUnit의 일반적인 테스트 시나리오입니다. 이를 효과적으로 수행하기 위해 JUnit은 가독성을 높이고 테스트 프로세스를 단순화하는 여러 가지 방법을 제공합니다.

JUnit 5 및 4.13 어설션

JUnit 5 및 4.13에서 @Test 예상되는 속성이 포함된 주석을 사용할 수 있습니다. 직접:

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThrows(IndexOutOfBoundsException.class, () -> emptyList.get(0));
}

AssertJ 및 Google Truth Assertions

AssertJ 및 Google Truth와 같은 외부 주장 라이브러리는 예외에 대한 추가 방법을 제공합니다. 주장:

AssertJ:

import static org.assertj.core.api.Assertions.*;

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatThrownBy(() -> emptyList.get(0))
        .isInstanceOf(IndexOutOfBoundsException.class);
}

Google Truth:

import static com.google.common.truth.Truth.*;

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatCode(() -> emptyList.get(0)).willThrow(IndexOutOfBoundsException.class);
}

JUnit Pre-4.13 주장 (더 이상 사용되지 않음)

4.13 이전 JUnit 버전의 경우 더 번거로운 접근 방식은 try-catch 블록 내에서 예외를 수동으로 확인하는 것이었습니다.

@Test
public void testIndexOutOfBoundsException() {
    boolean thrown = false;
    ArrayList<Object> emptyList = new ArrayList<>();

    try {
        emptyList.get(0);  // Intentionally triggers an exception
    } catch (IndexOutOfBoundsException e) {
        thrown = true;
    }

    assertTrue(thrown);
}

이 접근 방식은 더 이상 사용되지 않습니다. 앞서 언급한 방법보다 덜 관용적입니다. 자세한 내용은 [JUnit 테스트-FAQ](https://junit.org/junit4/faq.html)를 참조하세요.

위 내용은 JUnit 테스트에서 예외를 효과적으로 어설션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.