대역의 필요성
외부 요인이 테스트에 관여하게 될때 외부상황에 따라 일관적인 테스트를 진행할수 없기때문에 필요하다.
대역을 이용한 테스트
1. 외부 요인을 대신할 클래스를 만들고 메서드에 값을 넣어 테스트 실행
2. DB 연동 대신 맵을 이용하여 메모리에만 데이터를 저장하여 테스트 할수있다(영속성 보장 X)
대역의 종류
스텁(Stub) | 구현을 단순한 것으로 대체한다. 테스트에 맞게 단순히 원하는 동작을 수행한다. StubCardNumberValidator가 스텁 대역에 해당한다. |
가짜(Fake) | 제품에는 적합하지 않지만, 실제 동작하는 구현을 제공한다. DB 대신에 메모리를 이용해서 구현한 MemoryAutoDebitInfoRepository가 가짜 대역에 해당한다. |
스파이(Spy) | 호출된 내역을 기록한다. 기록한 내용은 테스트 결과를 검증할때 사용한다. |
모의(Mock) | 기대한 대로 상호작용을 하는지 행위를 검증한다. 기대한 대로 동작하지 않으면 익셉션을 발생할 수 있다. 모의 객체는 스텁이자 스파이도 된다. |
대역과 개발 속도
대역을 사용하면 실제 구현이 없어도 다양한 상황에 대해 테스트가 가능하다.
실제 구현이 없어도 실행 결과를 확인할수 있으며 DB가 없어도 회원데이터가 올바르게 저장되는지 확인할수 있다.
의존하는 대상을 구현하지 않아도 테스트 대상을 완성할 수 있게 만들어주며 이는 대기시간을 줄여주어 개발 속동를 올리는 데 도움이 된다
'책 리뷰 > 테스트 주도 개발 시작하기' 카테고리의 다른 글
Chapter 9 : 테스트 범위와 종류 (0) | 2024.12.06 |
---|---|
Chapter 8 : 테스트 가능한 설계 (0) | 2024.12.04 |
Chapter 6 : 테스트 코드의 구성 (0) | 2024.12.01 |
Chapter 5 : JUnit 5 기초 (0) | 2024.11.30 |
Chapter 4 : TDD·기능 명세·설계 (0) | 2024.11.30 |