테스트가 어려운 코드● 하드 코딩된 경로 : 해당 경로에 파일이 반드시 위치해야함● 의존 객체를 직접 생성● 정적 메서드 사용● 실행 시점에 따라 달라지는 결과 ○ LocalDate.now() 혹은 Random 사용하는 코드● 역할이 섞여 있는 코드● 메서드 중간에 소켓 통신 코드 포함 +) 소켓 통신이나 HTTP 통신의 경우 실제를 대체할 서버를 로컬에 띄워서 처리 가능 (서버 수준의 대역)● 콘솔에서 입력을 받거나 결과를 콘솔에 출력● 테스트 대상이 사용하는 의존 대상 클래스나 메서드가 final : 대역으로 대체하기 어려움● 테스트 대상의 소스를 소유하고 있지 않아 수정이 어려움테스트 가능한 설계테스트가 어려운 주된 이유 = 의존하는 코드를 교체할 수 있는 수단이 없음 ●..