11장. 단위 테스트 안티 패턴
비공개 메서드 단위 테스트 전혀 하지 말아야 된다 비공개 메서드와 테스트 취약성 단위 테스트를 하려고 비공개 메서드를 노출하는 경우에는 식별할수 있는 동작만 테스트하는 것을 위반한다 비공개 메서드와 불필요한 커버리지 죽은 코드다 추상화가 누락되어 있다 비공개 메서드 테스트가 타당한 경우 비공개 메서드를 테스트하는 것 자체
11 posts
비공개 메서드 단위 테스트 전혀 하지 말아야 된다 비공개 메서드와 테스트 취약성 단위 테스트를 하려고 비공개 메서드를 노출하는 경우에는 식별할수 있는 동작만 테스트하는 것을 위반한다 비공개 메서드와 불필요한 커버리지 죽은 코드다 추상화가 누락되어 있다 비공개 메서드 테스트가 타당한 경우 비공개 메서드를 테스트하는 것 자체
통합 테스트라는 퍼즐의 마지막 조각은 프로세스 외부 관리 의존성이다. 가장 일반적인 예는 애플리케이션 데이터베이스다 실제 데이터베이스를 테스트하면 회귀 방지가 아주 뛰어나지만 설정하기 쉽지 않다 데이터베이스 테스트를 위한 전제 조건 형상 관리 시스템에 데이터베이스 유지 개발자마다 별도의 데이터베이스 인스턴스 사용 데이터베
목은 테스트 대상 시스템과 의존성 간의 상호 작용을 모방하고 검사하는 데 도움이 되는 테스트 대역이다 목은 비관리 의존성에만 적용해야 된다 목의 가치를 극대화하기 비관리 의존성에만 목을 사용하게끔 제한하는 것이 중요하지만 이는 목의 가치를 극대화 하기 위한 첫 번째 단계일 뿐이다 시스템 끝에서 상호 작용 검증하기 시스템
단위 테스트에만 전적으로 의존하면 시스템이 전체적으로 잘 작동하는지 확신할 수 없다 단위 테스트가 비즈니스 로직을 확인하는데 좋지만 비즈니스 로직을 외부와 단절된 상태로 확인하는 것만으로는 충분하지 않다 통합 테스트는 무엇인가? 통합 테스트의 역할 단위 테스트는 세가지 요구사항을 충족하는 테스트다 단일 동작 단위를 검증하
좋은 단위 테스트 스위트의 속성 개발 주기에 통합돼 있다 코드베이스 중 가장 중요한 부분만을 대상으로 한다 최소한의 유지비로 최대의 가치를 끌어낸다 가치 있는 테스트 가치 있는 테스트 작성하기 리팩터링할 코드 식별하기 코드의 네 가지 유형 복잡도 또는 도메인 유의성 코드 복잡도는 코드 내 의사 결정 지점 수로 정의한다 도
단위테스트 스타일 출력 기반 테스트 가장 품질이 좋음 상태 기반 테스트 두번째 통신 기반 테스트 가장 품질이 낮음 단위 테스트의 세 가지 스타일 출력 기반 테스트(output based testing) 상태 기반 테스트(state based testing) 통신 기반 테스트(communication based testin
런던파는 테스트 대상 코드 조각을 서로 분리하고 불변 의존성을 제외한 모든 의존성에 테스트 대역을 써서 격리하고자 한다 고전파는 단위 테스트를 분리해서 병렬로 실행할 수 있게 하자고 한다 테스트 간에 공유하는 의존성에 대해서만 테스트 대역을 사용한다 목과 스텁 구분 테스트 대역의 종류 목(mock) 스텁(stub) 가짜(
좋은 단위 테스트 스위트의 특성 개발 주기에 통합돼 있다 코드베이스의 가장 중요한 부분만을 대상으로 한다 최소한의 유지비로 최대 가치를 끌어낸다 가치 있는 테스트 식별 가치 있는 테스트 작성 좋은 단위 테스트의 4대 요소 자세히 살펴보기 회귀 방지 리팩터링 내성 빠른 피드백 유지 보수성 첫 번째 요소: 회귀 방지 회귀는
단위 테스트를 구성하는 방법 AAA(arrange act assert) 패턴 사용 3A 패턴은 테스트를 준비(arrange), 실행(act), 검증(assert) 세 단계로 나누는 것을 의미한다. AAA 패턴은 스위트 내 모든 테스트가 단순하고 균일한 구조를 갖는데 도움이 된다 일관성이 이 패턴의 가장 큰 장점 중 하나다
고전파(classical school)는 단위 테스트와 테스트 주도 개발에 원론적으로 접근하는 방식 런던파(London school)는 단위 테스트와 테스트 주도 개발에 실용적으로 접근하는 방식 ‘단위 테스트’의 정의 단위 테스트의 속성 작은 코드 조각을 검증하고 빠르게 수행하고 격리된 방식으로 처리하는 자동화된 테스트다
단위 테스트를 배우는 것은 테스트 프레임워크나 목 라이브러리등과 같은 기술적인 부분을 익히는 것에 그치지 않는다 단위 테스트를 매우 많이 작성하더라도 많은 버그와 유지비로 프로젝트 진행이 느려지게 된다 단위 테스트 현황 대부분의 프로그래머는 단위 테스트를 실천하고 중요성을 알고 있다 보통 제품코드와 테스트 코드의 비율은