본문 바로가기

STUDY/TIL

Mock, TestDouble

Mock객체

실제 모듈을 대신하는 가짜 객체
구현하는 데 필요하지만 실제로 준비하기엔 여러 가지 어려움이 따르는 대상을 필요한 부분만큼만 채워넣어서 만든 객체

(출처: 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD 실천법과 도구 189p)

모듈이 가진 의존성을 단절시키기 위해 사용

테스트더블(TestDouble)

제라드 메스자로스(Gerard Meszaros)가 만들어낸 용어
대역, 스턴트맨을 뜻하는 스턴트 더블(StuntDouble)에서 차용함
실제 객체를 사용해 테스트하기 어려울 경우 이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체

출처: http://xunitpatterns.com/Test%20Double.html

더미 객체(Dummy Object)

인스턴스화된 객체가 필요하지만, 해당 객체의 기능까지는 필요하지 않은 경우 사용
더미 객체의 메서드가 호출되었을 때 정상동작은 보장되지 않음

테스트 스텁(Test Stub)

더미 객체보다는 좀 더 발전된 객체
더미 객체가 마치 실제로 동작하는 것처럼 만들어진 객체
객체의 특정 상태를 가정해서 만듦 -> 특정 값을 리턴해주거나 특정 메시지를 출력..

페이크 객체(Fake Object)

여러 개의 인스턴스를 대표할 수 있거나, 테스트 스텁보다 복잡한 구현이 들어있는 객체
복잡한 로직이나 객체 내부에서 필요로하는 다른 외부객체들의 동작을 비교적 단순화하여 구현한 객체

테스트 스파이(Test Spy)

메서드의 정상호출 여부 확인을 목적으로 구현
대부분의 Mock 프레임워크들(jMock, Mockito...)은 기본적으로 테스트 스파이 기능을 제공하고있음

Mock 객체(Mock Object)

행위를 검증하기 위해 사용되는 객체
수동으로 만드는 것도 가능하나 대부분 Mock프레임워크를 사용함

'STUDY > TIL' 카테고리의 다른 글

Composite Key (복합 키)  (0) 2021.07.07
객체지향 설계 원칙 5가지 (SOLID)  (0) 2021.07.05
JWT를 어디에 저장할까  (0) 2021.05.26
HTTP 상태코드  (0) 2021.05.11
REST URI 설계  (0) 2021.05.04