2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

@AfterAll

작성: sangseek | 게시 날짜: 2025/12/18 | 조회수: 61
[ 편집불가 ]

JUnit Jupiter(JUnit 5)에서의 `@AfterAll`은 해당 테스트 클래스의 모든 테스트가 실행된 뒤 한 번만 호출되는 정리(tear-down) 메서드임을 표시하는 어노테이션입니다. 주된 용도는 테스트에서 공유한 자원(데이터베이스 연결, 외부 서버, 파일, 스레드 등)을 해제하거나 정리하는 것입니다. 주요 특징과 유의사항: - 실행 시점: 같은 테스트 클래스의 모든 `@Test` 메서드와 기타 lifecycle 메서드가 끝난 뒤에 한 번 실행됩니다. - 기본 요구사항: 메서드는 기본적으로 `static`이어야 합니다. (정적 메서드로 선언하지 않으면 예외가 발생합니다.) - 예외: 클래스에 `@TestInstance(TestInstance.Lifecycle.PER_CLASS)`를 설정하면 인스턴스가 클래스당 하나만 생성되므로 `@AfterAll`을 비정적(non-static) 메서드로 선언할 수 있습니다. - 여러 개 있을 때: 클래스에 여러 `@AfterAll`이 있으면 모두 실행되지만 호출 순서는 보장되지 않습니다. - 중첩 클래스: 중첩 테스트 클래스(Nested)가 있으면 각 클래스의 라이프사이클에 따라 별도로 `@AfterAll`이 실행됩니다. - 예외 처리: `@AfterAll`에서 예외가 발생하면 그 예외는 테스트 런 결과에 반영되므로 정리 코드에서 예외 처리를 적절히 해야 합니다. - JUnit 4의 대응 어노테이션은 `@AfterClass`입니다(동일한 목적). 간단한 예 (Java): @BeforeAll static void setUpAll() { /* 공유 자원 준비 */ } @AfterAll static void tearDownAll() { /* 공유 자원 정리 */ } 그리고 `@TestInstance(TestInstance.Lifecycle.PER_CLASS)`를 쓰면: @TestInstance(Lifecycle.PER_CLASS) class MyTests { @AfterAll void tearDownAll() { /* non-static 가능 */ } } 요약: `@AfterAll`은 테스트 클래스 레벨에서 모든 테스트가 끝난 뒤 한 번만 실행되는 정리용 메서드를 표시하는 어노테이션이며, 기본적으로 `static`이어야 하고 `PER_CLASS` 인스턴스 정책을 사용하면 비정적 메서드로도 사용할 수 있습니다.
내용이 부정하다면 싫어요를 누르세요.