CS/개발론

[개발론][테스트] Mock

pythaac 2022. 5. 10. 18:34

정의

  • 테스트를 위해 의존하는 객체를 가짜로 만들어 사용하는 방법
  • 필요한 이유
    • 단위테스트에서 실행하는 메서드가 다른 네트워크, 데이터베이스 등 복잡한 의존성을 가진 경우

https://www.crocus.co.kr/1555

 

사용하는 경우

  • 테스트 환경 구축이 어려운 경우
    - 데이터베이스 설치, 서버 구성
  • 특정 경우에 의존적인 경우
    - 수많은 테스트 중에 하나의 테스트만 네트워크/데이터베이스를 통한 결과가 필요
  • 테스트 시간이 오래 걸리는 경우

 

기본 분류

  • 테스트 더블
    - 테스트 진행이 어려울 때 대신 진행할 수 있도록 만들어주는 객체
    - Mock 객체와 유사하며 더 상위 의미
  • 더미 객체
    - 단순하게 인스턴스화되는 수준으로만 객체를 구현
    - 인스턴스가 필요할 뿐, 객체 기능은 필요하지 않는 경우 사용
  • 테스트 스텁 (Test Stub)
    - 더미 객체가 실제 동작하는 것처럼 보이게 만든 객체
    - 특정 상태를 가정하여 특정 값/메시지를 반환/출력해주는 역할
    - 하드코딩 형태
  • 페이크 객체
    - 여러 상태를 대표할 수 있도록 실제 구현이 된 것처럼 보이는 형태
    - 실제와 동일한 모양으로 객체 내부를 구현
  • 테스트 스파이
    - 테스트에 사용되는 객체, 메소드의 사용/상태를 기록
  • Mock 객체
    - 행위 검증을 위해 사용되는 객체
    - 수동으로 만들거나 프레임워크를 통해 생성
Mock 객체는 행위검증(Behavior Verification)에 사용
Stub은 상태 검증(State Verification)에 사용

 

 

https://www.crocus.co.kr/1555

 

[Mockito] Mock 개념(Mock Object)

단위 테스트를 하기 위해서는 한번에 메서드 하나만을 실행해 보는 것인데 이러한 메서드가 다른 네트워크, 데이터베이스 등등 제어하기 어려운 것들에 의존하고 있다면 어떻게 단위 테스트를

www.crocus.co.kr