[ test ] @AutoConfigureMockMvc / @ExtendWith 차이

2025. 6. 16. 14:49·스프링 | 스프링 부트

✅ @AutoConfigureMockMvc

  • 컨트롤러를 포함한 전체 동작을 통합적으로 테스트할 때 사용
    • 보통 특정 컨트롤러 테스트할때 사용하는 것 같지만, 서비스 리포 테스트(= 통합 테스트) 도 가능하다는말
  • @SpringBootTest가 존재해야 사용 가능
    • 테스트에 필요한 의존성 제공
    • @Autowired 허용하여, 객체 의존성 주입

 

📦 특징

  • 실제 Spring 빈들이 다 로딩됨 (DB까지 연결되면 진짜로 저장도 함)
  • 실제 HTTP 요청처럼 컨트롤러, 서비스, 리포지토리 흐름을 전부 테스트함
  • 무겁지만 실환경과 유사한 테스트 가능

✅ @ExtendWith(MockitoExtension.class)

  • JUnit과 Spring Framework을 연결하는 역할
  • 서비스, 유틸 등 Spring 없이 빠르게 단위 테스트할 때 사용된다.
  • 스프링 부트 애플리케이션 전체 또는 특정 레이어(예: 서비스, 레포지토리)를 대상으로 테스트할때 유용

 

📦 특징

  • Spring 실행 없이 new 없이도 @Mock, @InjectMocks로 객체 구성 가능
  • 보통 로직만 검증하고 싶은 서비스 단위 테스트에 적합
  • 테스트 빠르고 가벼움

 

💡 예시코드

@ExtendWith(MockitoExtension.class)
class BookServiceTest {

    @Mock
    private BookRepository bookRepository;

    @InjectMocks
    private BookService bookService;

    @Test
    void testLogic() {
        // 단위 테스트 로직
    }
}

 

 

📌 @InjectMocks

실제로 테스트할 객체를 말한다. (ex. BookService)

    @InjectMocks
    private BookService bookService;
    
    @Mock
    private UserService userService;

    @Mock
    private TokenService tokenService;

    @Mock
    private MainCategoryRepository mainCategoryRepository;

 

 

📌@Mock

의존성을 가짜로 주입할때 사용한다.

    @Mock
    private UserService userService;

    @Mock
    private TokenService tokenService;

    @Mock
    private MainCategoryRepository mainCategoryRepository;

 

🔁 같이 사용가능한가 ?

❌ 같이 쓰기 절대 불가능 ❌

  • @ExtendWith(MockitoExtension.class)는 Spring 컨텍스트 없이 단위 테스트를 하기 위한 설정
  • @SpringBootTest + @AutoConfigureMockMvc는 Spring을 실행하는 통합 테스트

→ 둘은 서로 다른 목적이라 병행 사용하지 않음.

'스프링 | 스프링 부트' 카테고리의 다른 글

[ Spring ] JWT 개념과 기본 구현  (1) 2025.07.25
🔨 @Builder vs @SuperBuilder  (0) 2025.07.25
[ test ] : Test 코드 사용을 위한 기본 어노테이션  (1) 2025.06.15
[ Spring ] : 스프링이란 ?  (1) 2025.06.13
[ Spring ] @Transactional 이란?  (0) 2025.04.02
'스프링 | 스프링 부트' 카테고리의 다른 글
  • [ Spring ] JWT 개념과 기본 구현
  • 🔨 @Builder vs @SuperBuilder
  • [ test ] : Test 코드 사용을 위한 기본 어노테이션
  • [ Spring ] : 스프링이란 ?
Adose
Adose
  • Adose
    도즈의 개발 블로그
    Adose
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • JAVA (22)
      • 스프링 | 스프링 부트 (32)
        • 스프링 시큐리티 (1)
        • 채팅 (1)
      • 스프링 프로젝트 (5)
        • JDBC - 은행앱 구현 (1)
        • Spring Boot - 독서 블로그 프로젝트 (3)
        • 개인 프로젝트 - CoreBrief (1)
      • 가상화 기술 (21)
      • Git (1)
      • 코딩테스트 (38)
        • 프로그래머스 입문 (68)
      • AWS (1)
      • 데이터베이스 (0)
      • CS 공부 (4)
      • 알고리즘, 자료구조 (5)
      • 우테코 프리코스 (7)
      • 트러블 슈팅 (2)
      • 프론트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    멋쟁이사자처럼백엔드
    GIT
    프론트
    스프링
    LV2
    test
    jdbc
    자바
    Spring
    Java
    프로그래머스
    멋쟁이사자처럼
    springdatajdbc
    LV0
    스프링부트
    LV1
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Adose
[ test ] @AutoConfigureMockMvc / @ExtendWith 차이
상단으로

티스토리툴바