Test Fixture

한 줄 정의

Test Fixture는 테스트 실행에 필요한 객체, DB 데이터, 외부 응답을 준비하는 데이터와 구성이다.

실무에서 왜 문제 되는가

  • fixture가 복잡하면 테스트가 무엇을 검증하는지 보이지 않는다.
  • 테스트 간 데이터를 공유하면 실행 순서에 따라 실패할 수 있다.
  • 운영 도메인 규칙과 맞지 않는 fixture는 실제로 불가능한 상태를 검증하게 만든다.
  • builder가 과도하게 범용화되면 기본값이 숨겨진다.

실무 판단 기준

상황선택
단순 값 객체테스트 안에서 직접 생성
반복되는 도메인 객체Test Data Builder
DB 상태 필요테스트별 명시적 setup
복잡한 시나리오의미 있는 factory 메서드

자주 나는 실수

  • 하나의 거대한 fixture를 여러 테스트가 공유한다.
  • 테스트에 필요 없는 필드까지 모두 드러낸다.
  • fixture 기본값이 도메인 규칙을 위반한다.
  • 실패 원인을 알기 어려운 랜덤 데이터를 사용한다.

확인 방법

  • 테스트 이름과 fixture만 보고 조건을 이해할 수 있는지 확인한다.
  • 테스트 간 실행 순서를 바꿔도 통과하는지 본다.
  • fixture가 실제 도메인 invariant를 만족하는지 확인한다.

핵심 요약

Fixture는 테스트의 전제 조건을 표현한다.

좋은 fixture는 짧고 명확하며 검증하려는 조건만 드러낸다.

공유 fixture는 중복을 줄이지만 테스트 간 결합을 만들 수 있다.

Test Data Builder는 반복 생성을 줄이지만 숨겨진 기본값을 조심해야 한다.

도메인 규칙을 위반하는 fixture는 테스트 신뢰도를 떨어뜨린다.

꼬리 질문

  • 테스트 fixture가 복잡하면 어떤 문제가 생기는가?
  • Test Data Builder는 언제 유용한가?
  • 테스트 데이터 공유는 왜 위험한가?

관련 문서