我使用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