11장. 단위 테스트 안티 패턴
비공개 메서드 단위 테스트
전혀 하지 말아야 된다
비공개 메서드와 테스트 취약성
단위 테스트를 하려고 비공개 메서드를 노출하는 경우에는 식별할수 있는 동작만 테스트하는 것을 위반한다
비공개 메서드와 불필요한 커버리지
- 죽은 코드다
- 추상화가 누락되어 있다
비공개 메서드 테스트가 타당한 경우
비공개 메서드를 테스트하는 것 자체는 나쁘지 않다
비공개 메서드가 구현 세부사항의 프록시에 해당하므로 나쁜것
비공개 상태 노출
안티패턴으로 단위 테스트 목적만으로 비공개 상태를 노출하는것이 있다
테스트 유의성을 위해 공개 API의 노출 영역을 넓히는 것은 좋지 않은 습관이다
테스트로 유출된 도메인 지식
도메인 지식을 테스트로 유출하는 것은 또하나의 흔한 안티 패턴
코드 오염
테스트에만 필요한 제품 코드를 추가하는것
구체 클래스를 목으로 처리하기
일부 기능을 지키려고 구체 클래스를 목으로 처리해야 하면 이는 단일 책임 원칙을 위한하는 결과다
시간 처리하기
시간에 따라 달라지는 기능을 테스트하면 거짓 양성이 발생할 수 있다
앰비언트 컨텍스트로서의 시간
로거 기능과 마찬가지로 시간을 엠비언트 컨텍스트로 사용하는것도 안티 패턴이다
명시적 의존성으로서의 시간
더나은 방법으로 시간의존성을 명시적으로 주입하는것