2025/01/07 3

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

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.1. AAA 패턴테스트를 준비, 실행, 검증 세 부분으로 나누어 구성하는 방법 구조준비: SUT와 의존성 셋팅실행: SUT에서 메서드 호출 및 의존성 전달검증: 결과 검증. (반환 값이나 SUT나 협력자의 상태, SUT가 호출한 메서드 등) 장점일관성: 스위트 내 모든 테스트가 단순하고 균일한 구조를 갖는 데 도움이 됨 2. 권장 사항여러 개의 준비, 실행, 검증 구절 피하기여러 개의 실행 구절은 여러 개의 동작 단위를 검증하는 테스트임을 의미함이러한 구조는 단위 테스트가 아닌 통합 테스트임을 의미함 테스트 내 if 문 피하기한번에 너무 많은 것을 검증한다는 표시분기가 있어서 얻는 이점이 없음테스트를 읽고 이해하는 것을 더 어렵게 함반드시..

Code 2025.01.07

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

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다. 2. 런던파와 고전파격리 특성에 따라 나뉨 런던파작은 코드 조각 단위테스트 대상 시스템을 협력자에게서 완전히 격리모든 의존성을 Mock으로 대체코드 조각을 테스트 대역으로 분리 (단, 불변 비공개 의존성은 제외) 하향식 TDD전체 설계와 인프라부터 준비하고, 이를 기반으로 상위 레벨 테스트 및 하위 레벨 구현 장점입자성테스트 실패 시, 코드베이스의 어느 부분이 고장 났는지 명확히 알 수 있음의존성에서 문제가 발생하면 테스트가 실패함SUT의 문제인지 직관적으로 확인할 수 없음객체 그래프를 분할할 수 있음객체 그래프를 재생성하지 않아도 됨서로 연결된 클래스의 그래프가 커져도 테스트 용이 단점과잉 명세과도한 명세로 인해 테스트가 SUT의 세부..

Code 2025.01.07

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

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.1. '단위 테스트'의 정의단위 테스트란작은 코드 조각 단위로빠르고 자동으로 실행격리된 방식 격리단위 테스트는 격리된 환경에서 실행되야 함테스트는 순서에 의존하지 않아야 하며, 독립적으로 실행 가능한 상태여야 함 공유 의존성테스트 간에 공유되고 서로의 결과에 영향을 미칠 수 있는 상태나 데이터상태변경이 허용될 경우, 테스트 간 영향을 끼칠 수 있음공유 의존성을 제거하거나, 모의 객체로 대체정적 가변 필드 등 비공개 의존성애플리케이션의 실행 흐름에서 보이지 않는 의존성메모리 기반의 프록시로 대체데이터베이스 연결, 시스템 접근 등 프로세스 의존성애플리케이션 실행 프로세스 외부에서 실행되는 의존성의존성을 대체할 Mock 시스템 사용메시지 큐, ..

Code 2025.01.07