NUnit DateTime утверждение проблема на Дженкинс - PullRequest
1 голос
/ 19 мая 2011

Я использую шаблоны NHibernate и Spring.net для создания DAO.я написал несколько тестов для сохранения и извлечения сущностей.Проблема в том, что все тесты пройдены на наших локальных машинах, но на Jenkins есть странные проблемы с переменными DateTime:

Сообщение:

Expected: 2011-06-16 15:19:23.765
But was:  2011-06-16 15:19:23.765

Любые подсказки, что может быть причиной?

Ответы [ 3 ]

5 голосов
/ 19 мая 2011

Самое чистое решение:

Assert.That(actual, Is.EqualTo(expected).Within(tolerance).Milliseconds);

После в пределах (допуск) Вы можете указать что угодно, от Миллисекунд до дней.

Если вы используете http://nuget.org/List/Packages/NUnit.Snippets, тогда этотолько

atiewms tab tab

0 голосов
/ 19 мая 2011

Я подозреваю, что эти две даты слегка различаются в диапазоне менее миллисекунды, вероятно, из-за того, что хранилище не поддерживает значения даты / времени с точностью до "отметок".

Если вам действительно повезлоNUnit может обеспечить «равный в пределах определенного допуска» для DateTime, как для double.Если нет, то что-то вроде этого будет в порядке:

Assert.IsTrue(Math.Abs(oneDate.TotalSeconds - anotherDate.TotalSeconds) < 0.001)

Либо это, либо потенциально округление или усечение обоих значений DateTime до соответствующей миллисекунды, а затем используйте AreEqual.Это определенно дало бы более полезное сообщение об ошибке.

0 голосов
/ 19 мая 2011

Попробуйте

Assert.Equals(oneDate.ToString("s"), anotherDate.ToString("s"));

, где "s" означает

yyyy-MM-ddTHH:mm:ss

(ISO 8601).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...