본문 바로가기

dev/Test

Mock vs Stub


Test Double


유닛 테스의 테스트 케이스는 테스트 대상이 의존하는 것에 독립적이어야 한다.

즉, 테스트 대상을 격리시키는 것이 필요하다. 이를 가능하게 하는 방법은 실제 대상을 모방한 가짜를 사용하면 된다.

이렇게 사용되는 대역을 stub/Mock/Fake라고 부른다. 그리고 이들을 묶어 Test Double(테스트 대역)이라고 부른다.



Mock vs Stub

  • Mock Object : 행위 검증(behavior verification)에 사용
  • Stub : 상태 검증(state verification)에 사용

Mock Object의 위키피디아의 정의는 다음과 같다.

In object-oriented programmingmock objects are simulated objects that mimic the behavior of real objects in controlled ways. A programmer typically creates a mock object to test the behavior of some other object, in much the same way that a car designer uses a crash test dummy to simulate the dynamic behavior of a human in vehicle impacts. — https://en.wikipedia.org/wiki/Mock_object

stub의 위키피디아 정의는 다음과 같다.

Test stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test. - https://en.wikipedia.org/wiki/Test_stub

※ canned answer : 정해진 질문에 대한 사전에 준비한 답


정리하자면,

  • mock object는 행위를 검증하는데 사용된다.
  • stub는 상태를 검증하는데 사용된다


[참조]

SpringBoot @MockBean, @SpyBean 소개

단위 테스트 케이스와 테스트 더블(Test Double)

Mock Object란 무엇인가?

테스트 스텁(Test Stub)이란 무엇인가?