테스트 코드에서 실제 의존성을 사용하기 어려운 경우, 테스트 더블(Test Double) 을 사용할 수 있습니다. 테스트 더블은 의존성을 시뮬레이션하지만, 테스트에 더욱 적합하게 사용할 수 있도록 만듭니다. 실제 의존성을 포함하는 테스트는 외부 세계에 부수 효과를 유발할 수 있으며, 외부 세계에 의존적이기 때문에 비결정적인 동작을 유발할 수 있습니다. 또한, 실제 의존성을 포함하기 위해서 복잡한 설정이 필요한 경우도 존재합니다. 테스트 더블은 테스트로부터 외부 세계를 보호하고, 또 반대로 외부로부터 테스트를 보호하며, 복잡한 설정을 단순화할 수 있도록 해주는 가짜 의존성입니다.
테스트 더블의 종류에는 무엇이 있나요? 🤔
테스트 더블은 수행하는 역할에 따라서 더미, 스텁, 페이크, 스파이, 목으로 분류할 수 있습니다.
더미(Dummy) 는 아무런 동작도 하지 않으며, 인스턴스화된 객체만 필요한 경우에 사용됩니다.
스텁(Stub) 은 구현을 단순한 것으로 대체합니다. 테스트에 맞게 단순히 원하는 동작을 수행합니다.
페이크(Fake) 는 제품에는 적합하지 않지만, 실제 동작하는 구현을 제공합니다.
스파이(Spy) 는 호출된 내역을 기록합니다. 기록한 내용은 테스트 결과를 검증할 때 주로 사용되며, 스텁의 일종이기도 합니다.
목(Mock) 은 기대한 대로 상호작용하는지 행위를 검증합니다. 기대한 것처럼 동작하지 않는다면, 예외를 발생할 수 있습니다. 목 객체는 스텁이자 스파이기도 합니다.
LIST
'Spring & Backend' 카테고리의 다른 글
| CSS 전처리기(CSS preprocessor)란 무엇인가요? (0) | 2025.06.23 |
|---|---|
| 자바에서 클래스 정보는 어떻게 알아낼 수 있나요? (4) | 2025.06.23 |
| 알고 계신 git 브랜치 전략들에 대해 소개해주세요 (2) | 2025.06.20 |
| 동시성테스트 (0) | 2025.06.19 |
| 비동기 메세지 처리를 할 수 있는 미들웨어(kafka, redis, rabbitmq 등)는 어떤 것들이 있는지 (0) | 2025.06.19 |
