본문 바로가기
💻 하나씩 차곡차곡/Back-end

[Spring] 단위 테스트에서 서비스 중심? 레파지토리 중심?

by 뚜루리 2025. 4. 18.
728x90
320x100
단위 테스트를 하다가 보니 문득 떠오른 궁금증이나, 이유를 정확히 몰랐던 것들 정리!

 

 

📌 단위 테스트를 , 서비스 단을 테스트해야 하나요? 아니면 레포지토리를 테스트해야 하나요?

단위 테스트는 보통 서비스(Service) 중심으로 작성한다.”
👉 그리고 레포지토리는통합 테스트쿼리 테스트 따로 작성하는 경우가 많음.

 

📌 왜 서비스 기반 단위 테스트를 중심으로 하냐면?

이유 설명
비즈니스 로직 단위 테스트 대부분의 핵심 로직은 Service 존재함 (가입 조건, 로그인 인증, 포인트 지급 )
Mock으로 외부 의존 제거 Repository, EmailSender 등은 목처리하고 Service 흐름만 검증 가능
빠르고 안정적 DB 없이도 로직 테스트 가능빠른 단위 테스트 수행

 

📌  Repository는 어떻게 테스트하냐면?

방식 설명
통합 테스트 (@DataJpaTest) 실제 DB(H2 ) 연결해서 쿼리 실행, 저장/조회/정렬/조건 확인
QueryDSL, 복잡한 where 조건 쿼리 결과를 정확히 테스트하기 위해 Repository 따로 검증

 

✅ 실무에서 테스트 구조 예시

대상 테스트 종류 예시
UserService 단위 테스트 (Mock Repository) 회원가입, 로그인, 수정 로직 검증
UserRepository 통합 테스트 (@DataJpaTest) findByEmail, existsByStatus, 조건 검색
PostService 단위 테스트 (Mock PostRepository) 게시글 작성, 수정, 알림 트리거
PostRepository 통합 테스트 태그 포함 검색, 정렬 테스트

 

🧠 정리

구분 보편적 기준
단위 테스트 👉 Service 중심, Mock으로 의존 제거
Repository 테스트 👉 통합 테스트 (@DataJpaTest) 또는 Query 테스트용으로 별도 작성
728x90
320x100