본문 바로가기

컴퓨터 프로그래밍/Spring

[TEST] Mock 이란?

 

 

단위테스트를 하기 위해서 한번에 메서드 하나만을 실행하는 것인데 

이러한 메서드가 다른 Network, Database 등등 제어하기 어려운 것들에 의존하고 있다면 어떻게 단위 테스트를 해야할까?

 

* 단위 테스트란 상대적으로 격리된 방식으로 코드의 구별된 단위를 테스트하는 것 . 

 

Mock이란?

이러한 실제 객체를 만들어 사용하기에 시간, 비용 등의 Cost 가 높거나 혹은 객체 서로 간의 의존성이 강해

구현하기 힘들 경우 가짜 객체를 만들어 사용하는 방법

 

Mock 객체는 언제 필요한가?

- 테스트 작성을 위한 환경 구축이 어려운 경우 

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

- 테스트 시간이 오래 걸리는 경우 

- 개인 PC의 성능이나 서버의 성능 문제로 오래 걸릴 수 있는 경우 시간을 단축하기 위해 사용 

 

Mock 객체를 남용할 경우 안좋은 점. 

- Mock 위주 테스트 코드를 작성하면 given 메소드는 빠질 수가 없다. 

협력 객체가 어떻게 행동해야 하는지 테스트 코드 초반에 다 명시를 해줘야 하는데, 협력 객체에 실제 구현체를 사용하면 이런 과정들이 필요 없게 된다.