为什么NUnit Framework抛出DateTime AssertionException?

时间:2019-01-16 15:30:01

标签: c# nunit

我正在尝试格式化DateTime,但没有将属性更改为string的类型。

我的财产如下DateTime DateApplicationReceived = FormatDateTime();

我已经做了一个小功能,可以将我的string解析为DateTime类型。

private static DateTime FormatDateTime()
{
    var format = DateTime.UtcNow.ToString("G");

    var dateTime = DateTime.Parse(format);
    return dateTime;
}

让我们说日期和时间现在为:16/01/2019 15:30:00。我使用NUnit通过执行以下断言来测试我的功能是否正常工作:

public void ConvertsTime()
{
    var sut = DateApplicationReceived;

    Assert.That(sut, Is.EqualTo("16/01/2019 15:30:00"));
}

我的测试失败。预期结果将忽略(G的)格式,并将其显示为其他区域性2019-01/16

调试信息: debug info

为什么要这样做?我明确给出了一种格式,并且更改文化变体不会似乎起作用。

1 个答案:

答案 0 :(得分:1)

DateTime对象没有格式。

所以这里的代码没用:

var format = DateTime.UtcNow.ToString("G");
var dateTime = DateTime.Parse(format);

这完全等同于

var dateTime = DateTime.UtcNow;

在单元测试中,您应该将DateTimeDateTime进行比较,或者将stringstring进行比较。当前,您正在比较DateTimestring

因此,您应该将代码更改为:

Assert.That(sut.ToString("G"), Is.EqualTo("16/01/2019 15:30:00"));

Assert.That(sut, Is.EqualTo(DateTime.Parse("16/01/2019 15:30:00")));