[인프런 워밍업 클럽 3기]Day 16 미션

이형걸·2025년 3월 25일
0

Study

목록 보기
4/5
post-thumbnail

이 블로그 글은 박우빈님의 인프런 강의: Readable Code: 읽기 좋은 코드를 작성하는 사고법
를 참조하여 작성한 글입니다.

Layered Architecture 구조의 레이어별 테스트 작성법을 알아보았습니다.
레이어별로 1) 어떤 특징이 있고, 2) 어떻게 테스트를 하면 좋을지, 자기만의 언어로 다시 한번 정리해 볼까요?

✅ 레이어드 아키텍처 테스트 정리

1. Presentation Layer

  • 📌 역할: 클라이언트 요청을 받아 파라미터를 검증하고, Service Layer로 전달
  • 🧪 테스트 방법:
    • MockMvc, @WebMvcTest 사용
    • Controller만 띄워 테스트하고, 하위 레이어(Service, Repository)는 @MockBean 으로 대체
    • 주로 Validation 로직 검증이 핵심

2. Service (Business) Layer

  • 📌 역할: 핵심 비즈니스 로직 담당. Repository 호출 및 도메인 조합 처리
  • 🧪 테스트 방법:
    • @SpringBootTest 로 통합 테스트를 진행
    • 실제 DB까지 붙여 테스트할 수도 있고, 단위 테스트 시에는 Repository를 Mock 으로 처리 가능
    • 트랜잭션, 도메인 조합, 도메인 로직 분기 등을 검증

3. Persistence Layer

  • 📌 역할: 데이터베이스 접근, 순수 CRUD 처리 (비즈니스 로직 없음)
  • 🧪 테스트 방법:
    • @DataJpaTest 사용 → JPA 관련 빈만 등록되어 빠르게 테스트
    • 실제 DB와 연결하여 쿼리가 의도대로 잘 작동하는지 확인

✅ 나만의 정리

레이어역할테스트 방법추천 어노테이션
Presentation요청 처리, ValidationMockMvc, WebMvcTest@WebMvcTest, @MockBean
Service비즈니스 로직 처리SpringBootTest or 단위 테스트@SpringBootTest, @Transactional
RepositoryDB CRUD 처리DataJpaTest, 쿼리 테스트@DataJpaTest

✅ 테스트를 어떻게 나눠야 할까?

  • 단위 테스트 (Unit Test): 빠르고, 책임 분리가 명확한 클래스 (도메인, 유틸리티 등)
  • 통합 테스트 (Integration Test): 여러 레이어가 함께 작동하는 흐름을 검증 (Service 중심)
  • 컨트롤러 테스트: MockMvc 사용. Validation과 요청 흐름 검증
profile
현명하고 성실하게 살자

0개의 댓글