Spring Boot Test: @SpringBootTest와 @WebMvcTest의 차이점과 사용 상황

song yuheon·2023년 10월 23일
0

Spring

목록 보기
89/93
post-thumbnail

@SpringBootTest

개요

@SpringBootTest는 스프링 부트 애플리케이션의 통합 테스트를 위해 사용된다.
이 어노테이션을 사용하면 스프링 부트 애플리케이션 컨텍스트를 전체적으로 로드하여 테스트할 수 있다.

특징

  • 전체 스프링 컨텍스트를 로드한다.
  • 모든 계층의 빈(컨트롤러, 서비스, 리포지토리 등)이 로드되고 의존성 주입이 이루어진다.
  • 실제 데이터베이스와의 연동 테스트가 가능하다.
  • @MockBean을 사용하여 특정 빈을 모의 객체로 대체할 수 있다.

사용 상황

  • 전체 애플리케이션의 통합 테스트를 수행할 때
  • 실제 데이터베이스와의 연동을 테스트하고자 할 때
  • 외부 API와의 연동을 테스트하고자 할 때

@WebMvcTest

개요

@WebMvcTest는 스프링 MVC 컨트롤러 계층의 테스트에 특화된 어노테이션이다.
이 어노테이션을 사용하면 웹 계층의 컴포넌트만 로드하여 빠르게 테스트할 수 있다.

특징

  • 웹 계층의 컴포넌트(컨트롤러, 필터, 컨트롤러 어드바이스 등)만 로드한다.

  • @MockBean을 사용하여 서비스나 리포지토리 계층을 모의 객체로 대체해야 합니다.

  • 실제 HTTP 요청을 모의(MockMvc)하여 테스트할 수 있다.

  • 실제 데이터베이스와의 연동은 테스트하지 않습니다.

사용 상황

  • 컨트롤러 계층의 메소드와 URL 매핑을 빠르게 테스트하고자 할 때
  • HTTP 요청과 응답을 검증하고자 할 때
  • 서비스나 리포지토리 계층 없이 웹 계층만 빠르게 테스트하고자 할 때

정리

@SpringBootTtest와 @WebMvcTest는 스프링 부트 애플리케이션을 테스트할 때 사용되는 두 가지 주요 어노테이션이다.
@SpringBootTest는 전체 애플리케이션 컨텍스트를 로드하여 통합 테스트를 수행하는 반면 @WebMvcTest는 웹 계층만을 로드하여 컨트롤러 테스트에 특화되어 있다.
각각의 테스트 상황과 요구 사항에 따라 적절한 어노테이션을 선택하여 효율적이고 신속하게 테스트를 수행할 수 있다.

profile
backend_Devloper

0개의 댓글