【发布时间】:2015-10-02 20:40:27
【问题描述】:
我在 C# 的单元测试中发现了一些奇怪的行为。
给定以下代码:
var dateTime = DateTime.Parse("01/01/2015");
Assert.AreEqual(dateTime, new DateTime(2015, 1, 1));
我得到一个失败的测试结果:
Expected: 2015-01-01 00:00:00.000
But was: 01/01/2015 00:00:00 +00:00
我尝试在两者上调用 ToString(),传入 CultureInfo.CurrentCulture 并将 DateKind 在新的 DateTime 调用中设置为 Local 和 UTC,但我得到了相同的结果。
为什么这两种方法的结果不一样?
【问题讨论】:
-
using
==the result it true。一定是你没有展示的东西。 -
你的测试框架是什么,
Assert.AreEqual的签名是什么——是Object、DateTime、String还是别的什么? -
Defo 在 NUnit 中工作,但是 你 用什么测试呢?可以加个标签吗
-
@DieVeenman 不可能。 DateTime 是 DateTime 并且没有歧义。只有 ToString 会产生不同的结果(潜在的问题可能是混合日期和月份,但在此示例中无关紧要)
-
只是为了排除其他问题(例如引用相等),
Assert.AreEqual(new DateTime(2015, 1, 1), new DateTime(2015, 1, 1));会发生什么?