TDD에 대하여

임지원·2024년 4월 19일

TDD - Test Driven Development(테스트 주도 개발)

테스트가 주도하는 개발이란 비즈니스 코드에 앞서 테스트를 작성하고 그에 맞추어 전체 개발을 이끌어 나가는 것을 의미한다.

두 가지 규칙

  1. 실패하는 자동화 테스트 만들고, 자동화 테스트가 실패할 경우만 새로운 코드 작성
  2. 중복을 제거

프로그래밍 순서

  1. 빨강 - 실패하는 작은 테스트 작성
  2. 초록 - 어떠한 방법을 써서든 테스트를 통과하기
  3. 리팩토링 - 중복을 제거하기

장점

  • 디버깅 시간 단축
  • 재설계 시간 단축
  • 빠른 피드백
  • 추가 구현 용이
  • 의존성 주입 유도(결합도 저하, 응집도 상승)

단점

  • 생산성의 저하
  • 구조에 종속

스프링 프로젝트에 TDD 도입시 참고사항

Repository -> Service -> Controller 순으로 개발 추천
Repository는 구현할 메서드가 없는 통합 테스트에 가깝다.

Repository 테스트 시
JPA 레퍼지토리를 테스트하기 위해서 @DataJpaTest 어노테이션 추가하기

Service 테스트 시
Mock(테스트를 위한 가짜 객체)를 만들어주는 프레임워크 Mokito, JUnit(자바용 유닛 테스트 프레임워크)를 사용하여 테스트하기

Controller 테스트 시
HTTP응답 요청을 주로 테스트해야하기 때문에 MockMvc객체를 사용하여 HTTP 요청하기

profile
백엔드 새싹

0개의 댓글