728x90
@SpringBootTest와 @Import
Spring Boot에서 적절한 테스트 구성 접근 방식을 선택하는 것은 효과적이고 안정적인 테스트 환경을 만드는 데 중요합니다. 각 접근 방식의 목적, 용도, 특성 및 이점을 자세히 살펴보고 다른 접근 방식을 선택해야 하는 이유에 대해 알아보겠습니다.
- @SpringBootTest:
- 목적 및 역할: @SpringBootTest는 Spring Boot 테스트 프레임워크에서 제공하는 강력한 주석입니다. 통합 테스트를 위한 애플리케이션 컨텍스트를 생성하고 모든 구성, 구성 요소 및 빈과 함께 전체 컨텍스트를 로드합니다.
- 사용법: 테스트 클래스에 @SpringBootTest로 주석을 달아 런타임 환경을 유사하게 모방하고 포괄적인 통합 테스트를 수행합니다. 구성 요소 검색, 종속성 주입 및 구성 로드를 자동으로 수행합니다.
- 특성:
- 기본 애플리케이션 구성 및 추가 구성을 포함하여 전체 애플리케이션 컨텍스트를 로드합니다.
- 클래스 경로 스캔을 수행하여 구성 요소, 빈 및 구성을 검색합니다.
- 애플리케이션의 런타임 환경과 매우 유사한 포괄적인 테스트 환경을 제공합니다.
- 서로 다른 구성 요소 및 구성 간의 상호 작용을 테스트해야 하는 통합 테스트 시나리오에 이상적입니다.
- @Import:
- 목적 및 역할: @Import는 추가 구성 또는 구성 요소를 현재 컨텍스트로 명시적으로 가져오는 데 사용되는 Spring 프레임워크의 범용 주석입니다.
- 사용법: 기본적으로 자동으로 감지되거나 포함되지 않는 특정 구성 또는 구성 요소를 테스트 컨텍스트로 가져오려면 '@Import'로 테스트 클래스에 주석을 답니다.
- 특성:
- 사용자 지정 구성 또는 구성 요소를 테스트 컨텍스트로 명시적으로 가져올 수 있습니다.
- 포함된 구성 또는 구성 요소에 대한 세밀한 제어를 제공합니다.
- 전체 애플리케이션 컨텍스트를 로드하지 않고 특정 구성 또는 구성 요소에 집중하려는 경우에 적합합니다.
- 자동으로 감지되거나 포함되지 않는 사용자 지정 구성 또는 구성 요소를 가져오는 데 사용할 수 있습니다.
비교
@SpringBootTest 사용 시 고려 사항:
-
- 애플리케이션의 런타임 환경을 거의 모방한 포괄적인 테스트 환경을 제공합니다.
- 애플리케이션에 정의된 모든 구성, 구성 요소 및 빈을 자동으로 로드합니다.
- 여러 구성 요소 및 해당 상호 작용을 테스트해야 하는 통합 테스트 시나리오에 적합합니다.
- 전체 컨텍스트를 로드하기 때문에 더 높은 오버헤드와 더 긴 테스트 실행 시간이 있을 수 있습니다.
- @Import 사용 시 고려 사항:
- 특정 구성 또는 구성 요소를 테스트 컨텍스트로 명시적으로 가져올 수 있습니다.
- 포함된 구성 또는 구성 요소에 대한 세밀한 제어를 제공합니다.
- 전체 애플리케이션 컨텍스트를 로드하지 않고 특정 구성 또는 구성 요소에 집중하려는 시나리오에 적합합니다.
- 자동으로 감지되거나 포함되지 않는 사용자 지정 구성 또는 구성 요소를 가져오는 데 사용할 수 있습니다.
- 필요한 구성 또는 구성 요소만 로드하므로 유연성과 빠른 테스트 실행을 제공합니다.
적절한 접근 방식 선택
- @SpringBootTest
- 애플리케이션의 런타임 환경과 매우 유사한 포괄적인 테스트 환경이 필요합니다.
- 여러 구성 요소와 구성 간의 상호 작용을 테스트해야 합니다.
- 전체 컨텍스트를 로드하는 오버헤드는 테스트 요구에 허용됩니다.
- 다음과 같은 경우 @Import 사용을 고려하십시오.
- 포함된 구성 또는 구성 요소에 대한 세밀한 제어가 필수적입니다.
- 전체 응용 프로그램 컨텍스트를 로드하지 않고 특정 구성 또는 구성 요소에 집중하려고 합니다.
- 사용자 지정 구성 또는 구성 요소를 명시적으로 가져와야 합니다.
@SpringBootTest 또는 @Import 등 적절한 테스트 구성 방식을 선택하는 것은 특정 테스트 요구 사항에 따라 다릅니다. 목적, 용도 및 특성을 이해하면 효과적이고 안정적인 테스트 환경을 만들 수 있습니다. 각 접근 방식의 이점과 장단점을 고려하여 정보에 입각한 결정을 내리고 테스트를 최적화할 수 있습니다.
728x90
'Spring > Spring Boot' 카테고리의 다른 글
[SpringBoot] IntelliJ와 Gradle이 테스트 구성을 처리하는 방식의 차이에서 발생한 오류 (0) | 2023.06.28 |
---|---|
[Spring Boot] Spring Boot 3.x 실행 안될 경우 (0) | 2023.04.24 |
DB 연동 에러 HikariPool-1 - Exception during pool initialization (0) | 2022.11.30 |
스프링부트 몽고DB find*() query에러 (0) | 2022.11.25 |
spring-boot, react, axios 사용시 Cors, session, cookie 문제 (0) | 2022.03.04 |
댓글