블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.
4. 의존성 추상화를 위한 인터페이스 사용
인터페이스와 느슨한 결합
인터페이스 사용의 잘못된 인식
- 프로세스 외부 의존성을 추상화하여 느슨한 결합을 달성
- 단일 구현일 경우, 추상화가 아니게 됨
- 진정한 추상화는 발견하는 것이지 발명하는 것이 아님 (적어도 구현이 두가지 이상 있어야 함)
- YAGNI 위반
프로세스 외부 의존성에 인터페이스를 사용하는 이유는?
목을 사용하기 위함
- 인터페이스가 없으면 테스트 대역을 만들 수 없음
- 즉, 비관리 의존성만 인터페이스를 두기
5. 통합 테스트 모범 사례
항목 | 장점 | 단점 | 권장 사항 |
도메인 모델 경계 명시 | 단위 테스트와 통합 테스트 구분 쉬움 | - | |
계층 수 줄이기 | 단순화, 탐색 쉬움 | 계층 많을수록 책임 모호 테스트 어려움 |
도메인 모델, 애플리케이션 서비스, 인프라 계층만 사용 |
순환 의존성 제거 | 테스트 용이성 증가 | 테스트 방해, 목 처리 필요 → 도메인 테스트에 부적합 |
설계 시 순환 의존성 방지 |
다중 실행 구절 사용 | 시나리오 설득력 있음 | 테스트 초점 흐려짐 크기 증가 |
고유 테스트로 분리하거나 외부 의존 묶어 처리 |
'Code > Test' 카테고리의 다른 글
[더 자바, 애플리케이션을 테스트하는 다양한 방법] 1. JUnit 5 (0) | 2025.04.19 |
---|---|
[단위 테스트] 9. 목 처리에 대한 모범 사례 (0) | 2025.03.01 |
[단위 테스트] 8-1. 통합 테스트를 하는 이유: 통합 테스트 (0) | 2025.02.28 |
[단위 테스트] 7-2. 가치 있는 단위 테스트를 위한 리팩터링: 감사 시스템 (0) | 2025.02.28 |
[단위 테스트] 7-1. 가치 있는 단위 테스트를 위한 리팩터링: 코드 유형 (0) | 2025.02.27 |