뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

[참고 글] Test Double
Test Code

[참고 글] Test Double

2024. 5. 17. 15:05
반응형

Stunt Double
배우와 유사한 모습과 행위를 할 수 있어, 영화에서 위험하고 역동적인 액션을 대신 수행하는 사람. Stunt Man/Woman이라고도 함.

 

이러한 의미에서 가져온 Test Double.

5가지 종류

  1. Dummy
    아무것도 하지 않는 깡통 객체.
    실제 객체를 모방하기만 한. 동작이나 행위에 대해 정의되어 있지 않음.
  2. Fake
    단순한 형태로 동일한 기능은 수행하나, 프로덕션에서 쓰기에는 기능이 부족한 객체
    Ex) FakeRepsotiroy : 실제 프로덕션에서는 DB에 직접 액세스하여 저장/조회하지만 Fake Repository에서는 memory map을 선언하고, 해당 객체에 저장/조회하는 방식으로 구현한다.
    ㄴ 이를 프로덕션에서 쓰기에는 기능이 부족함.
  3. Stub
    테스트를 수행하며 실제로 로직이 수행되지 않고 요청에 대해 정해진 결과를 제공하도록 객체를 세팅한다.
    그 외 정의하지 않는 것에는 응답하지 않는다.

    Mockito와 같은 가짜(Mock) 객체를 지원하는 테스트 프레임워크를 활용하여 가짜 객체에 원하는 결과를 Stub한다.
  1. Spy
    Stub + 테스트 코드를 수행하면서 호출된 내용을 기록해놓고, 관련된 정보를 제공하는 객체.
    일부는 실제 객체의 동작대로 동작/반환하고 일부는 개발자가 동작에 대해 미리 정의할 수 있다.
  2. Mock
    행위에 대한 기대를 명세하고, 그에 따라 동작하도록 만들어진 객체

Stub과 Mock 차이가 뭐지??
A. 검증하려는 목적이 다름.

  • Stub : 상태 검증. 객체의 내부 상태가 어떻게 바뀌었는지 체크하는 용도
  • Mock : 행위 검증. 어떠한 값을 주면 어떻게 응답한다.라는 행위를 검증하는 용도

ex) 메일 발송 시스템을 테스트한다했을 때,
Stub : 메일 발송 List의 크기가 1인지 체크.                                                        -> 상태 검증
Mock : 메일 발송 메서드가 1번 호출됐는지, 어떤 값들이 호출됐는지를 체크.       -> 행위 검증

반응형
저작자표시 (새창열림)

'Test Code' 카테고리의 다른 글

[JUnit5] @Mock 필드 초기화 시점에 따른 @BeforeAll 이슈 (@BeforeEach, 테스트코드의 라이프 사이클)  (1) 2024.04.07
[JUnit5] 실패 케이스 테스트하기  (0) 2024.02.24
[테스트 코드] Controller Test Code / @WebMvcTest / 행위 검증  (0) 2024.02.12
    'Test Code' 카테고리의 다른 글
    • [JUnit5] @Mock 필드 초기화 시점에 따른 @BeforeAll 이슈 (@BeforeEach, 테스트코드의 라이프 사이클)
    • [JUnit5] 실패 케이스 테스트하기
    • [테스트 코드] Controller Test Code / @WebMvcTest / 행위 검증
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바