[단위 테스트의 기술] 3장 : 의존성 분리와 스텁

구범모·2025년 1월 8일
0

이 글은 단위테스트의 기술을 읽고 정리한 글입니다. 개인적으로 도움이 되었던 장을 정리하여 업로드합니다.

이 책의 저자는 작업 단위에서 사용할 수 있는 의존성에는 두가지 유형이 있다고 한다.

외부로 나가는 의존성

  • 작업 단위의 종료점을 나타내는 의존성
  • ex : 로거함수 호출, 데이터베이스 저장, 이메일 발송 등

내부로 들어오는 의존성

  • 작업단위의 종료점을 나타내지 않는 의존성
  • 테스트에 필요한 특수한 데이터나 동작을 작업 단위에 제공
  • ex : 데이터베이스 쿼리 결과, 파일 시스템의 파일 내용, 네트워크 응답 등

스텁 / 목

  • 스텁
    • 내부로 들어오는 의존성(간접 입력)을 끊어준다.
    • 따라서 테스트 대상 코드가 외부 시스템이나 데이터에 의존하지 않고도 동작할 수 있게 한다.
    • 하나의 테스트에서 여러개의 스텁을 사용할 수 있다. (스텁 ≠ 종료점이므로.)
    • 미리 정의된 가짜 데이터를 제공하여, 테스트 대상 코드의 입력을 시뮬레이션함
    • 외부로 나가는 의존성(간접 출력 또는 종료점)
    • 하나의 테스트에서 하나의 목을 사용하는 것이 일반적이다. (목 = 종료점이므로)
    • 테스트 대상 코드가 외부 시스템과 상호 작용할 때, 호출 여부와 인수를 검증한다.

스텁을 사용하는 이유

시간 관련 라이브러리를 사용하는 함수를 테스트한다고 가정해 보자.

해당 함수를 테스트할 때는 현재 날짜/시간에 따라 결과가 달라질 수 있고,

이는 일관성 있는 테스트를 작성하지 못한다는 뜻이다.

따라서 언제 실행하든 이전 실행과 같은 결과를 보장하기 위해서, 스텁을 사용한다.

profile
우상향 하는 개발자

0개의 댓글