2025/01/07 3

[단위 테스트] 3. 단위 테스트 구조

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.1. AAA 패턴테스트 코드를 세 단계로 구분하여 작성하는 패턴스위트 내 모든 테스트가 단순하고 균일한 구조를 갖게함단계설명Arrange테스트 대상(SUT) 및 의존성 설정Act테스트 대상 메서드 실행Assert결과 확인 (반환 값, 상태 변화, 호출 여부 등) 2. 권장 사항항목권장 사항이유 및 설명구절 수 제한한 테스트에는 한 act만단일 동작 검증(여러 실행은 단위 테스트가 아닌 통합 테스트임)조건문 회피분기문 피하기 (if, switch 등)복잡도 증가, 테스트 이해도 저하(한 테스트에 여러 경우를 넣지 말고 분리해야 함)메서드 캡슐화복잡한 검증 로직 분리 (private 메서드로)반복 제거가독성 향상목적 명확화불변 위반 방지여러 ..

Code/Test 2025.01.07

[단위 테스트] 2-2. 단위 테스트란 무엇인가: 런던파와 고전파

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다. 2. 런던파와 고전파격리 방식에 따라 크게 두 가지 스타일로 나뉨항목런던파 (London School)고전파 (Classical School)테스트 단위작은 코드 조각단일 동작 단위TDD 방식하향식 (전체 설계/인프라 → 상위 → 하위)상향식 (하위 → 상위 → 전체 설계/인프라)의존성 처리모든 의존성을 Mock으로 대체 (불변 비공개 제외)공유 의존성만 Fake/Stub으로 격리 (나머지는 실제 객체 사용)중심 철학상호작용 기반 (협력자 호출 검증)상태 기반 (메서드 실행 후 상태 검증)장점문제 위치 파악 쉬움테스트 단위 작음신뢰도 높은 테스트 (실제 객체와의 상호작용)현실적인 테스트 작성 가능단점과잉 명세구현 의존성 높음문제 원인 추..

Code/Test 2025.01.07

[단위 테스트] 2-1. 단위 테스트란 무엇인가: 단위 테스트란

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.1. '단위 테스트'의 정의작은 코드 조각을 단위로, 독립적으로 빠르게 검증하는 테스트 격리성독립적으로 실행 가능한 상태 (실행 환경이나 다른 테스트에 영향받지 않음)순서에 의존하지 않아야 함의존성 종류설명문제점해결 방법공유 의존성테스트 간에 공유되는 상태ex) 정적 가변 필드, 싱글턴, 전역 변수테스트 간 간섭 발생공유 제거각 테스트마다 초기화비공개 의존성코드에 드러나지 않는 숨은 의존성ex) JDBC, LocalDateTime.now() 등실패 원인 파악 어려움프록시추상화 (의존성 주입)프로세스 의존성외부 프로세스에 의존하는 시스템 구성 요소ex) RabbitMQ, Batch 등외부 시스템이 테스트에 영향Mock 객체 주입 예제) 공유..

Code/Test 2025.01.07