2011-05-19 67 views
1

我使用NHibernate和Spring.net模板來創建DAO。我爲保存和檢索實體寫了一些測試。問題是,所有的測試通過我們的本地機器,但是,詹金斯也有奇怪的問題有日期時間變量:jenkins NUnit DateTime斷言問題

消息:

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

任何線索可能是什麼原因?

回答

0

我懷疑這兩個日期在亞毫秒範圍內有細微的不同,可能是由於存儲不支持「滴答」精度的日期/時間值。

如果你真的很幸運,NUnit可能爲DateTime提供「在一定的容差範圍內相等」,就像double一樣。如果沒有,這樣的事情會好起來的:

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

要麼,可能圓形或截斷兩者DateTime值適當毫秒,並且然後使用AreEqual。這肯定會提供更有用的失敗信息。

+0

像oneDate.TotalMilliseconds VS anotherDate.TotalMilliseconds – sll 2011-08-17 23:43:18

+0

@sllev:哎呦;固定,謝謝。 – 2011-08-18 00:01:33

0

嘗試

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

其中 「s」 是指

yyyy-MM-ddTHH:mm:ss 

(ISO 8601)。

5

的乾淨的解決方案是:

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

後的(耐)可以指定任何的毫秒數達天。

如果您正在使用http://nuget.org/List/Packages/NUnit.Snippets那麼它只是

atiewms tab tab