我使用NHibernate和Spring.net模板来创建DAO。我写了一些保存和检索实体的测试。问题是我们本地机器上的所有测试通过,但在Jenkins上有DateTime变量的奇怪问题:
消息:
Expected: 2011-06-16 15:19:23.765
But was: 2011-06-16 15:19:23.765
任何线索可能是什么原因?
答案 0 :(得分:5)
最干净的解决方案是:
Assert.That(actual, Is.EqualTo(expected).Within(tolerance).Milliseconds);
After Within(容差)您可以指定从毫秒到天的任何内容。
如果您使用的是http://nuget.org/List/Packages/NUnit.Snippets,那么它只是
atiewms tab tab
答案 1 :(得分:0)
尝试
Assert.Equals(oneDate.ToString("s"), anotherDate.ToString("s"));
其中“s”表示
yyyy-MM-ddTHH:mm:ss
(ISO 8601)。
答案 2 :(得分:0)
我怀疑两个日期在亚毫秒范围内略有不同,可能是由于存储不支持日期/时间值到“滴答”精度。
如果你真的很幸运,NUnit可能会为DateTime
提供与double
相同的“在一定容忍范围内”。如果没有,这样的事情就可以了:
Assert.IsTrue(Math.Abs(oneDate.TotalSeconds - anotherDate.TotalSeconds) < 0.001)
要么是,要么将DateTime
两个值都舍入或截断到适当的毫秒,然后然后使用AreEqual
。这肯定会给出更有用的失败信息。