TDD 기반 개발

별빛사막·2025년 1월 3일

1. TDD 기반 개발 순서

TDD(Test-Driven Development)의 기본 순서는 RED → GREEN → REFACTOR이다.

  1. BaseInitData 설계 및 구현

  2. 샘플 데이터 생성

  3. 회원 도메인 개발
    :회원 Entity, Repository, Service 설계 및 구현

  4. 회원과 관련된 도메인 개발
    : 회원과 관련된 Entity, Repository, Service 설계 및 구현
    ex. 각 회원이 작성하는 샘플 글 5개

  5. TDD 사이클 진행

  • RED: 테스트 케이스(TestCase)를 추가한다. 이 단계에서는 실패하는 테스트를 작성한다.
  • GREEN: 컨트롤러와 액션 메서드를 구현하여 테스트를 통과시킨다.
  • REFACTOR: 작성한 코드를 리팩토링하여 가독성과 유지보수성을 높인다.
  1. DTO 및 모듈 개발
    : 테스트와 컨트롤러 개발 과정에서 필요한 DTO와 기타 모듈을 자연스럽게 작성한다.

2. Mockito 활용 개념

  1. Mockito란?
    • Mockito는 자바에서 테스트를 위한 목(Mock) 객체를 생성하고 관리하는 프레임워크이다.
    • 테스트 시 실제 객체 대신 목 객체를 사용하여 의존성을 격리하고, 테스트 대상 객체의 동작을 독립적으로 검증할 수 있도록 한다.
  1. Mockito를 사용하는 경우 >> TEST DB(ex.H2) 로 해결이 안될때
  • 테스트에서 외부 의존성을 격리해야 할 때 사용한다.
    • 예: 데이터베이스, 외부 API, 파일 시스템 등.
  • 테스트 대상 객체의 동작을 독립적으로 검증하고자 할 때 사용한다.
  • 복잡한 비즈니스 로직을 단위 테스트하기 위해 의존 객체를 Mocking해야 할 때 사용한다.

H2(인메모리 데이터베이스)는 속도가 빠르며, @SpringBootTest를 사용하여 통합 테스트를 충분히 수행할 수 있다. Mockito를 써야하는 특정 상황을 제외하고 Mockito를 활용하는 것은 개발자의 선택임.

  1. Mockito와 MockMvc의 차이
항목MockMvcMockito
목적컨트롤러 테스트의존 객체(Mock 객체) 테스트
주요 사용처HTTP 요청과 응답을 통한 컨트롤러 동작 검증Service, Repository 등 의존성 있는 클래스 테스트
특징실제 서버 없이 컨트롤러 테스트객체의 동작을 모의하여 테스트

요약

  • MockMvc는 컨트롤러를 테스트하기 위한 도구이다.
  • Mockito는 Service나 Repository처럼 의존성을 지닌 클래스를 테스트하기 위한 도구이다.
  • MockMvc와 Mockito는 TDD를 위한 테스트에서 보완적으로 활용된다.
profile
조금씩 매일 성장하자

0개의 댓글