1. TDD 기반 개발 순서
TDD(Test-Driven Development)의 기본 순서는 RED → GREEN → REFACTOR이다.
-
BaseInitData 설계 및 구현
-
샘플 데이터 생성
-
회원 도메인 개발
:회원 Entity, Repository, Service 설계 및 구현
-
회원과 관련된 도메인 개발
: 회원과 관련된 Entity, Repository, Service 설계 및 구현
ex. 각 회원이 작성하는 샘플 글 5개
-
TDD 사이클 진행
- RED: 테스트 케이스(TestCase)를 추가한다. 이 단계에서는 실패하는 테스트를 작성한다.
- GREEN: 컨트롤러와 액션 메서드를 구현하여 테스트를 통과시킨다.
- REFACTOR: 작성한 코드를 리팩토링하여 가독성과 유지보수성을 높인다.
- DTO 및 모듈 개발
: 테스트와 컨트롤러 개발 과정에서 필요한 DTO와 기타 모듈을 자연스럽게 작성한다.
2. Mockito 활용 개념
- Mockito란?
- Mockito는 자바에서 테스트를 위한 목(Mock) 객체를 생성하고 관리하는 프레임워크이다.
- 테스트 시 실제 객체 대신 목 객체를 사용하여 의존성을 격리하고, 테스트 대상 객체의 동작을 독립적으로 검증할 수 있도록 한다.
- Mockito를 사용하는 경우 >> TEST DB(ex.H2) 로 해결이 안될때
- 테스트에서 외부 의존성을 격리해야 할 때 사용한다.
- 예: 데이터베이스, 외부 API, 파일 시스템 등.
- 테스트 대상 객체의 동작을 독립적으로 검증하고자 할 때 사용한다.
- 복잡한 비즈니스 로직을 단위 테스트하기 위해 의존 객체를 Mocking해야 할 때 사용한다.
H2(인메모리 데이터베이스)는 속도가 빠르며, @SpringBootTest를 사용하여 통합 테스트를 충분히 수행할 수 있다. Mockito를 써야하는 특정 상황을 제외하고 Mockito를 활용하는 것은 개발자의 선택임.
- Mockito와 MockMvc의 차이
| 항목 | MockMvc | Mockito |
|---|
| 목적 | 컨트롤러 테스트 | 의존 객체(Mock 객체) 테스트 |
| 주요 사용처 | HTTP 요청과 응답을 통한 컨트롤러 동작 검증 | Service, Repository 등 의존성 있는 클래스 테스트 |
| 특징 | 실제 서버 없이 컨트롤러 테스트 | 객체의 동작을 모의하여 테스트 |
요약
- MockMvc는 컨트롤러를 테스트하기 위한 도구이다.
- Mockito는 Service나 Repository처럼 의존성을 지닌 클래스를 테스트하기 위한 도구이다.
- MockMvc와 Mockito는 TDD를 위한 테스트에서 보완적으로 활용된다.