본제: 자바와 Junit을 활용한 실용주의 단위 테스트
실용성있는 단위 테스트를 작성하기 위한 팁을 제공하는 책
- 정상적으로 동작하지는 증명하기 위해 의도적으로 테스트에 실패하고 수정하세요
- 테스트에서는 static 필드를 피해야 한다 → 인스턴스마다 공유될 수 있음
- 단언은 더 명확한(테스트하려는 것에 가까운) 표현을 사용해야 한다
- 검증된 예외(checked Exception)을 처리하려고 try/catch 블록을 넣지 말고 예외를 그대로 던져라
- AAA(arrange-act-assert) 를 기억하고 순서에 맞게 테스트를 작성하라
- 개별 메서드가 아닌 종합적인 동작을 테스트하라 → 의미를 지녀야 한다
- private 메서드는 테스트하지 마라 → 해야 한다면 설계에 문제가 있는 것이다
- Before, After 어노테이션은 여러 개를 개별적으로 적용 할 수 있다
- 모든 성능 최적화는 실 데이터 기반이어야 한다 → 추측 금지
- 좋은 테스트의 조건
- 빠른 테스트 → 느린것에 대한 의존성을 최소화 하라
- 고립성 → 다른 단위 테스트에 의존하지 않는다
- 반복 가능성
- 검증 가능성 → 기대하는 것이 무엇인지 반드시 단언하라
- 적시 사용성 → 가능한 가벼울 때 테스트를 작성해야 쉽다
- 테스트 경계 조건은 0,1, N을 기반으로 하여 작성한다면 쉽게 작성할 수 있다
- 성능이 즉시 문제되지 않는다면 어설픈 최적화 노력으로 시간을 낭비하기보다 코드를 깔끔하게 유지하세요
- 클래스를 설계할 때 개념에 맵핑하되 구체적인 생각은 하지 마세요 → 실세계와 동일하게 생각하지 않으려고 해보세요
- 목, 스텁은 테스트 커버리지와 현실의 간극을 형성 합니다 → 통합 테스트를 통해 종단 간 사용성을 보장하는 테스트를 추가로 해야 합니다
- 테스트는 시간을 투자해서 유지해야하는 코드입니다
- TDD의 하나의 테스트에 시간 제약을 부여해 보세요 → 더 작은 코드 작성에 집중 할 수 있습니다
- 동시성 처리 코드는 통합 테스트로 분류하는 것이 낫습니다 → 동시성 처리 부분만 따로 분리해 보세요