실용적 테스트 가이드 발자국 3주차
### ✨ 요약
*단위 테스트(Unit Test)**는 클래스나 메서드 단위로 동작을 검증하여 빠르고 안정적인 피드백을 제공한다.
*통합 테스트(Integration Test)**는 실제 Bean 간의 상호작용을 검증하며, 환경 설정이나 데이터베이스 연결 등 외부 의존성까지 포함된다.
*Spring Test 어노테이션** (@DataJpaTest, @WebMvcTest, @SpringBootTest)을 적절히 활용하여 테스트의 범위와 목적에 맞는 환경을 설정한다.
*Mock 객체**를 활용하여 의존성을 제거하고 테스트 대상을 고립시킨다.
### 📝 회고
*테스트 전략은 계층 구조와 목적에 맞게 선택해야 한다**
* 단위 테스트는 빠르고 명확한 검증에 좋지만, 시스템 전체의 유기적인 동작은 통합 테스트로 확인해야 한다.
*테스트 어노테이션의 정확한 의미를 이해하는 것이 중요하다**
* @WebMvcTest는 Controller만 로드하고, @MockBean으로 의존성을 주입해야 한다.
* @SpringBootTest는 모든 Bean을 로드하므로 무겁고 느릴 수 있으나, 실제 실행 환경과 유사하다.
*테스트 코드는 리팩터링과 유지보수 관점에서도 중요한 자산이다**
테스트가 어렵다는 이유로 생략하지 말고, *필수적인 도메인 로직에는 반드시 단위 테스트를 작성**하는 습관을 들여야 한다.
*Mock을 언제 쓸지, 실제 구현체를 언제 쓸지 판단하는 안목이 필요하다**
* 외부 API나 복잡한 비즈니스 로직은 Mock으로 격리하고, 실제 DB와의 연동은 따로 분리하여 테스트하는 것이 이상적이다.
댓글을 작성해보세요.