Files
spring-boot-examples/docs/test/11_애너테이션.md
2025-04-08 19:56:24 +09:00

4.8 KiB

아래는 스프링 부트 테스트에서 자주 사용되는 애너테이션들을 JUnit, Spring Test, Mockito로 구분하고, 표 형식으로 정리한 내용입니다. 각 애너테이션의 역할과 설명을 간결하게 작성했습니다.


JUnit 관련 애너테이션

애너테이션 설명
@Test 테스트 메서드를 정의. 별도 설정 없이 실행 가능한 기본 단위 테스트.
@BeforeEach 각 테스트 메서드 실행 전에 실행되는 설정 메서드를 지정.
@AfterEach 각 테스트 메서드 실행 후에 실행되는 정리 메서드를 지정.
@BeforeAll 모든 테스트 실행 전에 한 번 실행되는 클래스 수준 설정 메서드를 지정. (static 필요)
@AfterAll 모든 테스트 실행 후에 한 번 실행되는 클래스 수준 정리 메서드를 지정. (static 필요)
@Disabled 특정 테스트 메서드나 클래스를 비활성화하여 실행에서 제외.
@DisplayName 테스트 메서드에 사용자 친화적인 이름을 지정해 가독성 향상.
@ParameterizedTest 동일한 테스트를 여러 데이터로 반복 실행. (예: 값 소스와 함께 사용)
@Nested 테스트 클래스 내에 계층적 구조를 만들어 관련 테스트를 그룹화.

Spring Test 관련 애너테이션

애너테이션 설명
@SpringBootTest 스프링 부트 애플리케이션 컨텍스트를 로드하여 통합 테스트를 실행. (webEnvironment 설정 가능)
@WebMvcTest MVC 계층(컨트롤러)만 로드해 단위 테스트. 서비스나 리포지토리는 모킹 필요.
@DataJpaTest JPA 관련 테스트를 위해 리포지토리와 데이터베이스 설정만 로드. (H2 기본 사용)
@AutoConfigureMockMvc MockMvc를 자동 설정해 컨트롤러 테스트에 사용.
@Transactional 테스트 메서드 실행 후 트랜잭션을 롤백하여 데이터베이스 상태를 초기화.
@Rollback @Transactional과 함께 사용해 롤백 여부를 명시적으로 설정. (기본: true)
@Testcontainers Testcontainers를 사용해 Docker 기반 데이터베이스 등을 테스트 환경에 통합.
@DynamicPropertySource 테스트에서 동적으로 프로퍼티(예: 데이터베이스 URL)를 설정. (Testcontainers와 자주 사용)
@AutoConfigureRestDocs 스프링 REST Docs를 자동 설정해 API 문서 생성을 지원.

Mockito 관련 애너테이션

애너테이션 설명
@Mock 모킹된 가짜 객체를 생성. 외부 의존성을 대체할 때 사용.
@InjectMocks 모킹된 객체를 실제 객체에 주입해 테스트 대상 객체를 초기화.
@Spy 실제 객체를 감싸 일부 메서드만 모킹 가능. 전체 동작을 유지하면서 특정 동작만 변경.
@MockBean 스프링 컨텍스트에 모킹된 빈을 등록. @SpringBootTest@WebMvcTest에서 사용.
@ExtendWith(MockitoExtension.class) JUnit 5와 Mockito를 통합해 @Mock, @InjectMocks 등을 활성화.

추가 참고

  • JUnit: 테스트 실행의 기본 프레임워크로, 단위 테스트와 통합 테스트 모두에서 사용됩니다.
  • Spring Test: 스프링 부트의 컨텍스트와 통합된 테스트를 지원하며, 계층별 테스트에 특화된 애너테이션을 제공합니다.
  • Mockito: 의존성을 모킹해 단위 테스트를 독립적으로 실행하거나, 통합 테스트에서 특정 빈을 대체하는 데 유용합니다.

이 표는 책의 부록 A. 자주 사용하는 테스트 애너테이션 정리에 포함시키기에 적합합니다. 필요하면 특정 애너테이션에 대한 예제나 더 자세한 설명을 추가할 수 있으니 말씀해 주세요!