> 백엔드 개발 > C++ > `DateTime.Now`에 의존하는 효과적인 단위 테스트 코드 방법은 무엇입니까?

`DateTime.Now`에 의존하는 효과적인 단위 테스트 코드 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-12 06:36:42
원래의
350명이 탐색했습니다.

How to Effectively Unit Test Code Dependent on `DateTime.Now`?

단위 테스트에서 시간 종속성 분리

DateTime.Now에 의존하는 코드 테스트는 독특한 과제를 제시합니다. 시스템 클럭에 대해 직접 테스트하면 불안정성이 발생하고 테스트의 신뢰성이 떨어집니다. 이 종속성을 관리하는 두 가지 효과적인 접근 방식은 다음과 같습니다.

접근 방법 1: 의존성 주입

선호되는 방법은 시간 종속성을 추상화하는 것입니다. 현재 시간을 가져오는 메서드를 정의하는 인터페이스(예: ITimeProvider)를 만듭니다. SystemTimeProvider을 사용하는 구체적인 클래스(예: DateTime.Now)로 이 인터페이스를 구현하세요. 현재 시간이 필요한 클래스에 이 인터페이스를 삽입하세요.

단위 테스트 중에 미리 결정된 ITimeProvider 값을 반환하는 모의 DateTime를 삽입할 수 있습니다. 이를 통해 시스템 시계에 영향을 주지 않고 테스트에 사용되는 시간을 완벽하게 제어할 수 있습니다.

접근 방법 2: 주변 상황(주의)

또 다른 옵션은 정적 컨텍스트를 사용하는 것입니다. 활성 시간 공급자를 보유하는 정적 TimeProvider 속성을 ​​사용하여 기본 클래스(예: Current)를 만듭니다. 기본 구현(예: SystemTimeProvider)을 처음에 설정할 수 있습니다.

테스트를 위해 정적 Current 속성을 ​​재정의하여 모의 공급자를 사용하세요. 결정적으로, 후속 테스트에서 예상치 못한 동작을 방지하려면 각 테스트 후에 Current 속성을 ​​기본값으로 재설정하는 것을 잊지 마세요. 이 접근 방식에서는 테스트 간섭을 피하기 위해 세심한 정리가 필요합니다.

요약

두 방법 모두 단위 테스트에서 시간 종속성을 효과적으로 격리할 수 있습니다. 그러나 종속성 주입은 일반적으로 정적 주변 컨텍스트를 사용하는 것에 비해 깔끔한 디자인과 의도하지 않은 부작용의 위험을 줄이기 위해 선호됩니다.

위 내용은 `DateTime.Now`에 의존하는 효과적인 단위 테스트 코드 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿