JAVA · 테스트
@Nested 테스트
중첩 클래스로 테스트를 계층적으로 구조화합니다.
테스트중급NestedBDD구조화테스트계층
핵심 설명
중첩 클래스로 테스트를 계층적으로 구조화합니다.
Java code
// import org.junit.jupiter.api.*;
// import static org.junit.jupiter.api.Assertions.*;
// @Nested 테스트 구조 (의사코드)
// @DisplayName("스택 테스트")
// class StackTest {
// Stack<String> stack;
//
// @BeforeEach
// void createStack() { stack = new Stack<>(); }
//
// @Test
// @DisplayName("새 스택은 비어있다")
// void isEmpty() { assertTrue(stack.isEmpty()); }
//
// @Nested
// @DisplayName("요소를 push한 후")
// class AfterPush {
// @BeforeEach
// void pushElement() { stack.push("element"); }
//
// @Test
// @DisplayName("비어있지 않다")
// void isNotEmpty() { assertFalse(stack.isEmpty()); }
//
// @Test
// @DisplayName("peek은 요소를 제거하지 않는다")
// void peekDoesNotRemove() {
// assertEquals("element", stack.peek());
// assertFalse(stack.isEmpty());
// }
//
// @Nested
// @DisplayName("pop한 후")
// class AfterPop {
// @BeforeEach
// void popElement() { stack.pop(); }
//
// @Test
// @DisplayName("다시 비어있다")
// void isEmpty() { assertTrue(stack.isEmpty()); }
// }
// }
// }
class Main {
public static void main(String[] args) {
System.out.println("@Nested는 Given-When-Then 구조를 자연스럽게 표현합니다.");
System.out.println("외부 클래스의 @BeforeEach가 먼저 실행됩니다.");
}
}학습 팁
@Nested는 BDD의 Given-When-Then을 자연스럽게 표현합니다. 각 중첩 레벨이 추가 컨텍스트(Given)가 됩니다.
주의할 점
@Nested 클래스에서는 @BeforeAll/@AfterAll을 사용할 수 없습니다(기본 설정). @TestInstance(PER_CLASS)로 해결 가능합니다.
자주 묻는 질문
@Nested 테스트란 무엇인가요?
중첩 클래스로 테스트를 계층적으로 구조화합니다.
@Nested 테스트 학습 시 주의할 점은 무엇인가요?
@Nested 클래스에서는 @BeforeAll / @AfterAll 을 사용할 수 없습니다(기본 설정). @TestInstance(PER_CLASS) 로 해결 가능합니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.