NUnit Assert.AreEqual Допуски DateTime

Мне интересно, нашел ли кто-нибудь хорошее решение для этого:

В наших модульных тестах; мы обычно используем Assert.AreEqual () для проверки наших результатов. Все хорошо и хорошо; пока мы не начнем пытаться использовать это в свойствах DateTime.

Хотя времена очень похожи, иногда они отключаются на миллисекунды, что приводит к сбою тестов. В нашем приложении; пока они точны с точностью до секунды; для нас этого достаточно.

Кто-нибудь нашел хороший способ как-то реализовать допуски в этом случае? Обычно наш обходной путь состоит в том, чтобы разделить его на 2 отдельных утверждения; один, который проверяет .ToShortDateString () , и другой, который проверяет .ToShortTimeString () , но, на мой взгляд, это выглядит неаккуратно.

56
задан Jim B 26 August 2010 в 17:42
поделиться

1 ответ

Вы можете проверить допуски с помощью чего-то вроде:

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);
81
ответ дан 26 November 2019 в 17:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: