Assert.Equal 不适用于日期
Assert.Equal is not working with dates
我写了一个简单的测试方法来验证一个将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);
}
重点是日期和时间值完全相同(也在watch中验证window)为什么会出现这个异常?我发现 this 文章使用增量来比较较小的时差是否导致比较失败,但仍然不确定为什么我仍然需要一个额外的函数来比较 date/time 断言。
Edit-1:这是我正在测试的日期转换方法
public static DateTime GetDateTime(this long milliseconds)
{
try
{
return new DateTime(1970, 1, 1).AddMilliseconds(Convert.ToDouble(milliseconds));
}
catch { throw; }
}
尽管有新日期时间(长)的替代方法,但逻辑上这有什么问题?
精确到秒(控制台向您显示的粒度)它们是相等的。精确到毫秒,它们不是
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
我写了一个简单的测试方法来验证一个将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);
}
重点是日期和时间值完全相同(也在watch中验证window)为什么会出现这个异常?我发现 this 文章使用增量来比较较小的时差是否导致比较失败,但仍然不确定为什么我仍然需要一个额外的函数来比较 date/time 断言。
Edit-1:这是我正在测试的日期转换方法
public static DateTime GetDateTime(this long milliseconds)
{
try
{
return new DateTime(1970, 1, 1).AddMilliseconds(Convert.ToDouble(milliseconds));
}
catch { throw; }
}
尽管有新日期时间(长)的替代方法,但逻辑上这有什么问题?
精确到秒(控制台向您显示的粒度)它们是相等的。精确到毫秒,它们不是
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