[SpringBoot] @SpringBootTest와 @Import
본문 바로가기
Spring/Spring Boot

[SpringBoot] @SpringBootTest와 @Import

by IYK2h 2023. 6. 28.
728x90

@SpringBootTest와 @Import

Spring Boot에서 적절한 테스트 구성 접근 방식을 선택하는 것은 효과적이고 안정적인 테스트 환경을 만드는 데 중요합니다. 각 접근 방식의 목적, 용도, 특성 및 이점을 자세히 살펴보고 다른 접근 방식을 선택해야 하는 이유에 대해 알아보겠습니다.

  1. @SpringBootTest:
    • 목적 및 역할: @SpringBootTest는 Spring Boot 테스트 프레임워크에서 제공하는 강력한 주석입니다. 통합 테스트를 위한 애플리케이션 컨텍스트를 생성하고 모든 구성, 구성 요소 및 빈과 함께 전체 컨텍스트를 로드합니다.
    • 사용법: 테스트 클래스에 @SpringBootTest로 주석을 달아 런타임 환경을 유사하게 모방하고 포괄적인 통합 테스트를 수행합니다. 구성 요소 검색, 종속성 주입 및 구성 로드를 자동으로 수행합니다.
    • 특성:
      • 기본 애플리케이션 구성 및 추가 구성을 포함하여 전체 애플리케이션 컨텍스트를 로드합니다.
      • 클래스 경로 스캔을 수행하여 구성 요소, 빈 및 구성을 검색합니다.
      • 애플리케이션의 런타임 환경과 매우 유사한 포괄적인 테스트 환경을 제공합니다.
      • 서로 다른 구성 요소 및 구성 간의 상호 작용을 테스트해야 하는 통합 테스트 시나리오에 이상적입니다.
  2. @Import:
    • 목적 및 역할: @Import는 추가 구성 또는 구성 요소를 현재 컨텍스트로 명시적으로 가져오는 데 사용되는 Spring 프레임워크의 범용 주석입니다.
    • 사용법: 기본적으로 자동으로 감지되거나 포함되지 않는 특정 구성 또는 구성 요소를 테스트 컨텍스트로 가져오려면 '@Import'로 테스트 클래스에 주석을 답니다.
    • 특성:
      • 사용자 지정 구성 또는 구성 요소를 테스트 컨텍스트로 명시적으로 가져올 수 있습니다.
      • 포함된 구성 또는 구성 요소에 대한 세밀한 제어를 제공합니다.
      • 전체 애플리케이션 컨텍스트를 로드하지 않고 특정 구성 또는 구성 요소에 집중하려는 경우에 적합합니다.
      • 자동으로 감지되거나 포함되지 않는 사용자 지정 구성 또는 구성 요소를 가져오는 데 사용할 수 있습니다.

비교

@SpringBootTest 사용 시 고려 사항:

    • 애플리케이션의 런타임 환경을 거의 모방한 포괄적인 테스트 환경을 제공합니다.
    • 애플리케이션에 정의된 모든 구성, 구성 요소 및 빈을 자동으로 로드합니다.
    • 여러 구성 요소 및 해당 상호 작용을 테스트해야 하는 통합 테스트 시나리오에 적합합니다.
    • 전체 컨텍스트를 로드하기 때문에 더 높은 오버헤드와 더 긴 테스트 실행 시간이 있을 수 있습니다.
  • @Import 사용 시 고려 사항:
    • 특정 구성 또는 구성 요소를 테스트 컨텍스트로 명시적으로 가져올 수 있습니다.
    • 포함된 구성 또는 구성 요소에 대한 세밀한 제어를 제공합니다.
    • 전체 애플리케이션 컨텍스트를 로드하지 않고 특정 구성 또는 구성 요소에 집중하려는 시나리오에 적합합니다.
    • 자동으로 감지되거나 포함되지 않는 사용자 지정 구성 또는 구성 요소를 가져오는 데 사용할 수 있습니다.
    • 필요한 구성 또는 구성 요소만 로드하므로 유연성과 빠른 테스트 실행을 제공합니다.

적절한 접근 방식 선택

  • @SpringBootTest
    • 애플리케이션의 런타임 환경과 매우 유사한 포괄적인 테스트 환경이 필요합니다.
    • 여러 구성 요소와 구성 간의 상호 작용을 테스트해야 합니다.
    • 전체 컨텍스트를 로드하는 오버헤드는 테스트 요구에 허용됩니다.
  • 다음과 같은 경우 @Import 사용을 고려하십시오.
    • 포함된 구성 또는 구성 요소에 대한 세밀한 제어가 필수적입니다.
    • 전체 응용 프로그램 컨텍스트를 로드하지 않고 특정 구성 또는 구성 요소에 집중하려고 합니다.
    • 사용자 지정 구성 또는 구성 요소를 명시적으로 가져와야 합니다.

@SpringBootTest 또는 @Import 등 적절한 테스트 구성 방식을 선택하는 것은 특정 테스트 요구 사항에 따라 다릅니다. 목적, 용도 및 특성을 이해하면 효과적이고 안정적인 테스트 환경을 만들 수 있습니다. 각 접근 방식의 이점과 장단점을 고려하여 정보에 입각한 결정을 내리고 테스트를 최적화할 수 있습니다.

 

 

 

[SpringBoot] IntelliJ와 Gradle이 테스트 구성을 처리하는 방시

문제 상황 기존 코드는 @SpringBootTest를 사용하였습니다. 테스트를 진행할 때 Intellij의 test를 실행하면 정상 작동되고 gradle clean test를 사용하면 빌드 오류가 났습니다. 즉, 테스트 & 개발할땐 전혀

iyk2h.tistory.com

 

728x90

댓글