2011-05-19 96 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