TDD 2

[리팩터링] 테스트 구축하기

리팩터링을 제대로 하려면 견고한 테스트 스위트(test suite)가 뒷받침되어야 한다. 자동 리팩터링 도구를 활영하더라도 이 책에서 소개하는 리팩터링 중 다수는 테스트 스위트로 재차 검증해야 할 것이다.자가 테스트 코드의 가치프로그래머가 어떻게 일하는지 가만히 살펴보면, 실제 코드를 작성하는 시간의 비중은 그리 크지 않다.실제로는 아래와 같은 과정에 훨씬 많은 시간을 쏟는다.현재 상황 파악설계에 대한 고민디버깅이 "디버깅" 시간을 줄이는데, 자가 테스트 코드는 매우 중요하고 훌륭한 도구이다.모든 테스트를 완전히 자동화하고 그 결과까지 스스로 검사하게 만들자.참고) 엄밀하게 말하자면, 테스트 코드는 코드가 잘 동작하는지 확인할 수 있는 모든 종류의 코드이고,자가 테스트 코드는 코드가 스스로 테스트가 성공..

[Test] LocalDateTime 을 사용하는 함수의 테스팅 방법

LocalDateTime 을 사용하는 함수는 어떻게 테스팅 해야하지?테스트 코드를 작성하는 도중, LocalDateTime 에 따라 기능이 달라지는 함수를 테스팅할 필요성을 느끼게 됐다.근데 LocalDateTime.now()를 사용하게 되면, 테스트가 현재 시간에 따라 테스트 결과가 달라지는 상태가 되고, 이는 테스트는 반복가능해야 한다라는 테스트 규칙을 위반하게 된다.가장 단순한 해결책은 LocalDateTime을 Mocking 하는 것이겠지만, 이는 권장되지 않는 방법이다.@Mock 어노테이션은 매 테스트마다 새로 초기화되기 때문에, 반복가능한 테스트 문제에 대한 걱정이 없지만,LocalDateTime 은 static 메소드라 메소드 영역에 존재하고, 다음 테스트에서 여전히 그 모킹이 유지되어 있을..