为什么测试DateTime相等时此单元测试失败?

fli*_*ubt 8 datetime nunit unit-testing .net-3.5

在.NET 3.5上使用NUnit 2.2时,使用DateTime.Equals时,以下测试失败.为什么?

[TestFixture]
public class AttributeValueModelTest
{
    public class HasDate
    {
        public DateTime? DateValue
        {
            get
            {
                DateTime value;
                return DateTime.TryParse(ObjectValue.ToString(), out value) ? value : new DateTime?();
            }
        }

        public object ObjectValue { get; set; }
    }

    [Test]
    public void TwoDates()
    {
        DateTime actual = DateTime.Now;
        var date = new HasDate {ObjectValue = actual};
        Assert.IsTrue(date.DateValue.Value.Equals(actual));
    }
}
Run Code Online (Sandbox Code Playgroud)

Amy*_*y B 16

日期不相等.TryParse会丢掉一些滴答声.比较Tick值.

对于一次测试运行:

Console.WriteLine(date.DateValue.Value.Ticks);
Console.WriteLine(actual.Ticks);
Run Code Online (Sandbox Code Playgroud)

产量:

633646934930000000
633646934936763185
Run Code Online (Sandbox Code Playgroud)