Assert.Equal 不适用于日期

ak1*_*ak1 1 c# mstest .net-core

我写了一个简单的测试方法来验证一个将 long 值转换为 DateTime 的方法,以下是代码......

        [TestMethod]
    public void ConvertToDateTime_TestMethod()
    {
        long date = 1500024370374;

        DateTime result = date.GetDateTime(); 
        DateTime comparisonDate = new DateTime(2017, 07, 14, 9, 26, 10);
        Assert.AreEqual(result, comparisonDate);
    }
Run Code Online (Sandbox Code Playgroud)

重点是日期和时间值完全相同(也在观察窗口中验证)为什么会出现此异常?我发现这篇文章使用 delta 来比较微小的时间差异是否使比较失败,但仍然不确定为什么我仍然需要一个额外的函数来比较日期/时间断言。

编辑 1:这是我正在测试的日期转换方法

    public static DateTime GetDateTime(this long milliseconds)
    {
        try
        {
            return new DateTime(1970, 1, 1).AddMilliseconds(Convert.ToDouble(milliseconds));
        }
        catch { throw; }
    }
Run Code Online (Sandbox Code Playgroud)

即使有一个新的日期时间(长)的替代方法,但从逻辑上讲,这有什么问题?

Jam*_*iec 5

精确到秒(控制台向您显示的粒度)它们是相等的。到最接近的毫秒,它们不是

long date = 1500024370374;
DateTime result = new DateTime(1970,1,1).AddMilliseconds(date);
DateTime comparisonDate = new DateTime(2017, 07, 14, 9, 26, 10);

Console.WriteLine(result.ToString("dd-MM-yyyy HH:mm:ss.fffff"));
// 14-07-2017 09:26:10.37400
Console.WriteLine(comparisonDate.ToString("dd-MM-yyyy HH:mm:ss.fffff"));
// 14-07-2017 09:26:10.00000
Run Code Online (Sandbox Code Playgroud)

现场示例:http : //rextester.com/PYDLAD6594