[개발 일기] 2025.10.20 - 단위 테스트엔 @SpringBootTest을 사용하면 안된다?

2025. 10. 20. 12:09·개발 일기

💡 개요

 

ChatGPT왈, ‘@SpringBootTest는 통합 테스트용 어노테이션이다.’ 라고 한다.

 

 

나도 알고 있다.

 

 

통합 테스트에선 Controller - Service - Repository 각 계층의 전체 흐름을 테스트한다.

 

 

@SpringBootTest 어노테이션을 사용해야 스프링 컨테이너를 사용할 수 있고, 자연스럽게 DI을 적용할 수 있기 때문이다.

 

 

그럼 단위 테스트에선 @SpringBootTest을 사용하면 안되나?

 

 

 

🛠️ SpringBootTest와 단위 테스트

 

@SpringBootTest는 실제 애플리케이션 구동 환경과 동일하게 스프링 컨테이너를 띄워 전체 빈을 로드한 뒤 테스트를 수행하는 어노테이션이다.

 

 

따라서 Controller, Service, Repository 등 여러 계층이 연결된 상태에서 통합적인 동작을 검증할 때 사용된다.

 

 

 

⚙️ 단위 테스트에서는 왜 사용하지 않을까?

 

반면, 단위 테스트는 특정 클래스나 메서드 하나만을 독립적으로 검증하는 것이 목적이다.

 

 

이때는 스프링 컨테이너 전체를 띄우는 과정이 불필요하게 무겁고, 테스트 속도도 느려진다.

 

 

따라서 단위 테스트에서는 @SpringBootTest 대신, 필요한 빈만 로드하거나(Mock 객체 주입 등), 순수 자바 객체로 테스트를 수행하는 것이 일반적이다.

 

 

 

🤔 그래서 현업에선 단위 테스트에 @SpringBootTest을 사용하지 않나?

 

절대 아니다.

 

 

대부분의 개발자들은 @SpringBootTest를 엄밀한 의미의 단위 테스트보다는 ‘스프링 통합 테스트 환경에서의 단위 수준 검증’ 용도로 자주 사용한다.

 

 

예를 들어, 특정 서비스 로직 하나만 테스트하더라도 해당 로직이 여러 빈을 의존한다면, 이를 모두 Mocking하기보다 스프링 컨테이너를 띄워 실제 빈을 주입받아 검증하는 편이 더 효율적이기 때문이다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.10.22 - TestFlight (Apple Developer)  (0) 2025.10.22
[개발 일기] 2025.10.21 - 스택 포인터가 뭔데 도대체  (0) 2025.10.21
[개발 일기] 2025.10.16 - Redis가 싱글 스레드로 만들어진 이유  (0) 2025.10.16
[개발 일기] 2025.10.15 - DNS 계층 구조  (0) 2025.10.15
[개발 일기] 2025.10.14 - 프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유  (0) 2025.10.14
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.10.22 - TestFlight (Apple Developer)
  • [개발 일기] 2025.10.21 - 스택 포인터가 뭔데 도대체
  • [개발 일기] 2025.10.16 - Redis가 싱글 스레드로 만들어진 이유
  • [개발 일기] 2025.10.15 - DNS 계층 구조
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기
      • 똥쟁이
        • DB
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.10.20 - 단위 테스트엔 @SpringBootTest을 사용하면 안된다?
상단으로

티스토리툴바