Book : TDD 실천법과 도구 - 4장 Mock 을 이용한 TDD

Lee·2020년 5월 4일
0

Book

목록 보기
4/5
post-thumbnail

Mock 객체

자동차가 완성되기전에 나무, 점토를 이용하여 실제 자동차와 동일한 크기에 모형을 만드는 행위가 Mock이라고 한다. 일반적으로 Mock이란, 조각하기 쉬운 재료를 이용해 추후 만들어질 제품의 외양을 흉내 낸 모조품을 말한다. 마찬가지로 소프트웨어 개발에 있어서도 모듈의 겉모양이 실제 모듈과 비슷하게 보이도록 만든 가짜 객체를 Mock 객체라고 한다.

Mock 객체를 사용하는 이유

실제 재료로 만들려면 비용과 시간이 많이 들기 때문에, 비교적으로 제작하기 쉽고 비용이 덜 드는 나무, 점토로 만들어본것이다. 마찬가지로 실제 객체를 만들기엔 비용과 시간이 많이 들거나 의존성이 길게 걸쳐져 있어 제대로 구현하기 어려울 경우에 가짜 객체를 만들어서 사용한다.

Mock 사용 시기

  • 테스트 작성을 위한 환경 구축이 어려울 때
    환경 구축을 위한 작업 시간이 많이 필요한 경우에 Mock 객체를 사용한다. 오라클 DB를 설치해야 테스트가 가능한다든가, 웹 서버나, 웹 애플리케이션 서버, FTP 서버 등을 설치해야만 테스트가 가능해질 경우

  • 특정 모듈이 아직 갖고 있지 않아서 테스트 환경을 구축하지 못할 경우
    특정 모듈이 개발이 되지 않았거나, 혹은 누군가에게 모듈을 아직 넘겨받지 못할 경우

  • 테스트가 특정 경우나 순간에 의존적인 경우

  • 테스트 시간이 오래 걸릴 경우
    시간이 오래 걸리는 테스트가 있을 수 있다. 개인 PC의 성능이나 서버의 성능 문제로 인해 오래 걸릴 수도 있지만, 특정한 모듈을 호출했을 때, 속칭 멀리 갔다 오느라 시간이 걸리는 경우

Mockito

  • 간편한 사용법으로 인해 빠르게 확신되고 있는 Mock 프레임워크이다.

Mockito의 특징

  • 테스트 그 자체에 집중한다.
    테스트의 행위와 반응(interaction)에만 집중해서 테스트 메소드를 작성할 수 있다.
  • 테스트 스텁을 만드는 것과 검증을 분리시켰다.
  • Mock 만든느 방법을 단일화했다.
  • 테스트 스텁을 만들기 쉽다.
  • API가 간단한다.
  • 프레임워크가 지원해주지 않으면 안 되는 코드를 최대한 배제했다.
  • 실패 시에 발생하는 에러추적(stack trace)이 깔끔하다.

0개의 댓글