
@AfterEach는 주로 JUnit 5(플랫폼: Jupiter)에서 사용하는 테스트 수명주기 애노테이션으로, 각 테스트 메서드(@Test)가 실행된 직후에 호출되는 메서드를 표시합니다. 주된 목적은 각 테스트가 끝난 뒤 자원 정리(cleanup)나 상태 초기화(reset)를 수행하는 것입니다. 핵심 포인트 - 실행 시점: 각 테스트 메서드가 종료된 직후(성공/실패 관계없이) 실행됩니다. - 목적: 파일/DB 연결 닫기, 임시 데이터 삭제, 목(mock) 상태 초기화 등 테스트당 필요한 정리 작업 수행. - 인스턴스와 정적 여부: 기본 테스트 인스턴스 라이프사이클은 PER_METHOD(테스트마다 새 인스턴스)라서 메서드는 일반적으로 인스턴스 메서드로 작성합니다. @TestInstance(Lifecycle.PER_CLASS)를 사용하면 클래스당 인스턴스인 상황에서도 @AfterEach는 각 테스트 후에 호출됩니다. - 상속 및 실행 순서: 슈퍼클래스/서브클래스 둘 다 @AfterEach를 가지면 서브클래스의 @AfterEach가 먼저 실행되고 그다음 슈퍼클래스의 @AfterEach가 실행됩니다. - 예외 처리: @AfterEach에서 예외가 발생하면 해당 테스트의 실패 원인이 될 수 있으며, 추가 정리 작업이 필요한 경우 적절히 예외를 처리해야 합니다. - 파라미터 주입: JUnit은 TestInfo, TestReporter 같은 파라미터를 @AfterEach 메서드에 주입할 수 있습니다. - @After(또는 @AfterClass/@AfterAll)와의 차이: JUnit 4의 @After에 해당하며, @AfterAll은 모든 테스트 메서드가 끝난 뒤 한 번만 실행되는 메서드입니다(@AfterEach는 테스트마다 실행). 간단한 예 (Java, JUnit 5) public class MyTests { @BeforeEach void setUp() { // 테스트 전 설정 } @Test void testSomething() { // 테스트 코드 } @AfterEach void tearDown() { // 각 테스트 후 정리 작업 } } 요약하면, @AfterEach는 "각 테스트가 끝난 뒤 실행되는 정리 메서드"를 표시하는 애노테이션입니다.