인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

damongsanga님의 프로필 이미지
damongsanga

작성한 질문수

토비의 스프링 6 - 이해와 원리

학습 테스트

실무에서 Clock 사용 여부

작성

·

62

0

안녕하세요, Clock 사용한 테스트를 보면서 의문점이 생겼습니다.

 

실제로 실무에서도 시간 관련된 로직이 있는 클래스에는 Clock을 Bean으로 만들어서 주입해 사용하는 것이 일반적인가요? 그냥 LocalDateTime을 쓰는 경우를 많이 본 것 같아서 의문이 들었습니다.

 

만약 아니라면, 어떠한 다른 방법이 주로 사용되는지, 토비님은 어떤 방식을 선호하시는지 궁금합니다!

 

감사합니다~

답변 3

1

토비님의 프로필 이미지
토비
지식공유자

시간대(Timezone)이 하나면 충분한 경우라면 LocalDateTime을 쓰면 됩니다. 절대 시간을 저장해두고 여러 시간대로 전환하는 게 필요한 경우엔 OffsetDateTime이나 ZoneDateTime을 사용합니다.

이때 시간대를 옮겨가며 복잡한 시간 계산이 필요한 경우라면 Clock이 유용합니다.

그 외에는 사실 Clock을 잘 사용하지 않습니다. 다만, 테스트를 엄밀하게 하는 목적을 위해서, 혹은 장기적으로 글로벌 서비스가 되어서 여러 시간대를 오고가면서 시간 계산을 해야한다고 하면 Clock 빈을 기반으로 시간을 가져오는 방식을 표준으로 잡는 것이 좋습니다.

0

damongsanga님의 프로필 이미지
damongsanga
질문자

오오.. 테스트에서 fixed clock을 사용해야 될 것 같아서 적용해야 하나 고민했는데, 실제로는 시간대가 변할 일이 없으면 니즈가 크지 않군요! 답변 감사합니다 토비님!! :D

0

안녕하세요, 인프런 AI 인턴입니다.

damongsanga님께서 질문해 주신 내용에 대해 답변드리겠습니다. 시간 관련 로직에서 Clock을 사용하는 이유는 테스트의 효율성과 코드의 일관성을 높이기 위함입니다. ClockBean으로 주입하여 사용하면 다양한 상황을 효과적으로 테스트할 수 있으며, 테스트 환경에서 시간을 고정할 수 있어 유리합니다.

하지만, 실무에서는 종종 LocalDateTime을 직접 사용하기도 합니다. 이는 주로 코드가 간단하거나 시간 제어가 필요 없는 경우에 해당됩니다. Clock을 사용하여 해체적 주입의 이점을 누리면서도, 로직이 복잡하지 않다면 LocalDateTime을 직접 사용하는 경우도 많습니다.

토비님과 같은 경우에는 코드의 유연성과 테스트의 용이성을 위해 Clock을 사용하는 방식을 종종 추천드리며, 특히 시간 관련 복잡한 로직이 포함되어 있을 때 권장됩니다.

관련된 기존 질문과 답변을 확인해 보시면 도움이 되실 것 같습니다:
- 정적 팩토리 메서드

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

damongsanga님의 프로필 이미지
damongsanga

작성한 질문수

질문하기