Мне интересно, нашел ли кто-нибудь хорошее решение для этого:
В наших модульных тестах; мы обычно используем Assert.AreEqual ()
для проверки наших результатов. Все хорошо и хорошо; пока мы не начнем пытаться использовать это в свойствах DateTime.
Хотя времена очень похожи, иногда они отключаются на миллисекунды, что приводит к сбою тестов. В нашем приложении; пока они точны с точностью до секунды; для нас этого достаточно.
Кто-нибудь нашел хороший способ как-то реализовать допуски в этом случае? Обычно наш обходной путь состоит в том, чтобы разделить его на 2 отдельных утверждения; один, который проверяет .ToShortDateString ()
, и другой, который проверяет .ToShortTimeString ()
, но, на мой взгляд, это выглядит неаккуратно.
Вы можете проверить допуски с помощью чего-то вроде:
Debug.Assert((date1 - date2) < TimeSpan.FromSeconds(1));
Если вы не уверены, какая дата новее, используйте
Debug.Assert(Math.Abs((date1 - date2).TotalSeconds) < 1)
NUnit также добавил встроенную поддержку для этого, используя Within
ключевое слово
DateTime now = DateTime.Now;
DateTime later = now + TimeSpan.FromHours(1.0);
Assert.That(later, Is.EqualTo(now).Within(TimeSpan.FromHours(3.0)));
Assert.That(later, Is.EqualTo(now).Within(3).Hours);