我使用NHibernate和Spring.net模板來創建DAO。我爲保存和檢索實體寫了一些測試。問題是,所有的測試通過我們的本地機器,但是,詹金斯也有奇怪的問題有日期時間變量:jenkins NUnit DateTime斷言問題
消息:
Expected: 2011-06-16 15:19:23.765
But was: 2011-06-16 15:19:23.765
任何線索可能是什麼原因?
我使用NHibernate和Spring.net模板來創建DAO。我爲保存和檢索實體寫了一些測試。問題是,所有的測試通過我們的本地機器,但是,詹金斯也有奇怪的問題有日期時間變量:jenkins NUnit DateTime斷言問題
消息:
Expected: 2011-06-16 15:19:23.765
But was: 2011-06-16 15:19:23.765
任何線索可能是什麼原因?
我懷疑這兩個日期在亞毫秒範圍內有細微的不同,可能是由於存儲不支持「滴答」精度的日期/時間值。
如果你真的很幸運,NUnit可能爲DateTime
提供「在一定的容差範圍內相等」,就像double
一樣。如果沒有,這樣的事情會好起來的:
Assert.IsTrue(Math.Abs(oneDate.TotalSeconds - anotherDate.TotalSeconds) < 0.001)
要麼,可能圓形或截斷兩者DateTime
值適當毫秒,並且然後使用AreEqual
。這肯定會提供更有用的失敗信息。
嘗試
Assert.Equals(oneDate.ToString("s"), anotherDate.ToString("s"));
其中 「s」 是指
yyyy-MM-ddTHH:mm:ss
(ISO 8601)。
的乾淨的解決方案是:
Assert.That(actual, Is.EqualTo(expected).Within(tolerance).Milliseconds);
後的(耐)可以指定任何的毫秒數達天。
如果您正在使用http://nuget.org/List/Packages/NUnit.Snippets那麼它只是
atiewms tab tab
像oneDate.TotalMilliseconds VS anotherDate.TotalMilliseconds – sll 2011-08-17 23:43:18
@sllev:哎呦;固定,謝謝。 – 2011-08-18 00:01:33