정의
- 테스트를 위해 의존하는 객체를 가짜로 만들어 사용하는 방법
- 필요한 이유
- 단위테스트에서 실행하는 메서드가 다른 네트워크, 데이터베이스 등 복잡한 의존성을 가진 경우
사용하는 경우
- 테스트 환경 구축이 어려운 경우
- 데이터베이스 설치, 서버 구성 - 특정 경우에 의존적인 경우
- 수많은 테스트 중에 하나의 테스트만 네트워크/데이터베이스를 통한 결과가 필요 - 테스트 시간이 오래 걸리는 경우
기본 분류
- 테스트 더블
- 테스트 진행이 어려울 때 대신 진행할 수 있도록 만들어주는 객체
- Mock 객체와 유사하며 더 상위 의미 - 더미 객체
- 단순하게 인스턴스화되는 수준으로만 객체를 구현
- 인스턴스가 필요할 뿐, 객체 기능은 필요하지 않는 경우 사용 - 테스트 스텁 (Test Stub)
- 더미 객체가 실제 동작하는 것처럼 보이게 만든 객체
- 특정 상태를 가정하여 특정 값/메시지를 반환/출력해주는 역할
- 하드코딩 형태 - 페이크 객체
- 여러 상태를 대표할 수 있도록 실제 구현이 된 것처럼 보이는 형태
- 실제와 동일한 모양으로 객체 내부를 구현 - 테스트 스파이
- 테스트에 사용되는 객체, 메소드의 사용/상태를 기록 - Mock 객체
- 행위 검증을 위해 사용되는 객체
- 수동으로 만들거나 프레임워크를 통해 생성
Mock 객체는 행위검증(Behavior Verification)에 사용
Stub은 상태 검증(State Verification)에 사용
'CS > 개발론' 카테고리의 다른 글
[개발론] CRC 카드 (Class-Responsibility-Collaboration card) (0) | 2022.06.26 |
---|---|
[개발론] Responsibility-Driven Design (0) | 2022.06.26 |
[개발론] 생성 패턴 (Creational Pattern) - 싱글톤, 팩토리, 추상 팩토리, 빌더, 프로토타입 (0) | 2022.06.04 |