@ActiveProfiles("test") 🚀
@ActiveProfiles("test")는 스프링 컨테이너에 특정 테스트 클래스를 실행할 때 **"test"**라는 이름의 스프링 프로파일을 활성화하도록 지시하는 범용적인 어노테이션입니다. 이 어노테이션을 사용하면 애플리케이션의 운영 환경과 테스트 환경의 설정을 분리하여 관리할 수 있습니다.
주요 기능:
- 프로파일 기반 설정 활성화: application-test.properties 또는 application-test.yml 파일의 설정을 로드합니다.
- 빈 조건부 로드: @Profile("test") 어노테이션이 붙은 빈들을 스프링 컨테이너에 등록합니다.
- 사용 범위: @SpringBootTest와 같은 전체 컨텍스트를 로드하는 테스트에서 주로 사용됩니다.
@DataJpaTest 📊
@DataJpaTest는 JPA(Java Persistence API) 데이터 계층 테스트에 특화된 어노테이션입니다. 이 어노테이션은 애플리케이션의 전체 컨텍스트를 로드하는 대신, JPA 관련 컴포넌트들만 선택적으로 로드하여 테스트의 효율성을 높입니다.
주요 기능:
- 테스트 컨텍스트 제한: JPA 리포지토리, 엔티티 매니저, 데이터소스 등 데이터 계층에 필요한 빈들만 로드합니다.
- 자동 설정: 기본적으로 인메모리 데이터베이스(예: H2)를 설정하고, 각 테스트 메서드 실행 후 자동으로 롤백하여 데이터의 독립성을 보장합니다.
- 사용 목적: JPA 매핑, 리포지토리 메서드, 커스텀 쿼리 등의 정확한 동작을 검증하는 데 최적화되어 있습니다.
두 어노테이션 비교: @ActiveProfiles vs. @DataJpaTest
| 구분 | @DataJpaTest | @ActiveProfiles("test") |
| 목적 | JPA 데이터 계층 테스트에 최적화된 "슬라이스 테스트" | 지정된 프로파일의 설정을 활성화하는 "환경 설정" |
| 테스트 범위 | JPA 관련 빈(Repository 등)만 로드 | @SpringBootTest와 함께 사용 시 전체 컨텍스트 로드 |
| 테스트 속도 | 빠름 (일부 빈만 로드) | 상대적으로 느림 (전체 컨텍스트 로드 시) |
| 주요 활용 | 데이터 계층 유닛 테스트 | 다양한 환경별 설정(DB, API 등)을 구분하여 테스트 |
| 함께 사용 | 함께 사용 가능 | 함께 사용 가능 |
결론: 두 어노테이션은 서로 다른 목적을 가지고 있으며, 상호 보완적으로 사용될 수 있습니다. @DataJpaTest는 테스트 범위를 제한하여 속도를 높이는 데 효과적이고, @ActiveProfiles는 특정 테스트 환경에 맞는 설정을 적용하는 데 사용됩니다.
'tech > Spring' 카테고리의 다른 글
| [Spring] @Valid와 @Validated (1) | 2025.11.12 |
|---|---|
| Java에서 컬렉션 sort 동작 방식 (0) | 2025.11.05 |
| [Spring] @Builder(toBuilder = true) (1) | 2025.07.24 |
| [Spring] 좋은 AppConfig 설계 (0) | 2025.07.19 |
| [Spring] N + 1 문제 (1) | 2025.07.18 |