많은 DateTime 유효성 검사를 수행하는 시스템의 일부와 '지금 완료되었거나'한 시간 후에 시작될 것 '이 많은 부분을 만들기 시작합니다. 갈내 '지금'/ DateTime.Now를 어떻게 작성해야합니까?
일반적인 방법은 실제 시간를 얻을 수 DateTime.Now을 사용하는 것입니다.
그러나 유닛 테스트 중에 테스트가 기본 테스트 데이터 집합을 사용하는 대신 실행될 시간에 내 테스트 데이터를 설정해야하기 때문에 단위 테스트 중에 실제 두통을 겪을 수 있습니다. 그래서 나는 생각 : 왜 내 현재 '시간'을 설정할 수 있도록 '지금'내 자신을 사용하지 마십시오. 나는 testservers 내부 시계를 설정하고 싶지 않기 때문에이 솔루션에 대해 생각하고 있었고, 나는 당신이 그것을 어떻게 생각하는지 궁금해했다. 기본 생각은 내 자신의 DateTime 클래스를 사용한다는 것입니다. 이 클래스는 현재 datetime을 제공하지만 외부에서 자신의 시간을 설정할 수도 있습니다.
public static class MyDateTime
{
private static TimeSpan _TimeDifference = TimeSpan.Zero;
public static DateTime Now
{
get
{
return DateTime.Now + _TimeDifference;
}
}
public static void SetNewNow(DateTime newNow)
{
_TimeDifference = newNow - DateTime.Now;
}
public static void AddToRealTime(TimeSpan timeSpan)
{
_TimeDifference = timeSpan;
}
public static void SubtractFromRealTime(TimeSpan timeSpan)
{
_TimeDifference = - timeSpan;
}
}
Framework의 DateTime 기본 제공 메서드에는 어떤 문제가 있습니까? –
가능한 중복 : http://stackoverflow.com/questions/2425721/unit-testing-datetime-now –
'MyDateTime'이라고 부르는 것을 피하고'DateTime '을 실수하기 쉽고, 더 쉽게 호출 할 수 있습니다. 드러내다. –