为什么 NUnit Framework 会抛出 DateTime AssertionException?
Why is NUnit Framework throwing DateTime AssertionException?
我正在尝试格式化 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
。
调试信息:
为什么要这样做?我明确地给它一个格式并改变文化变体 似乎 没有任何效果。
DateTime
对象没有格式。
所以你这里的代码没用:
var format = DateTime.UtcNow.ToString("G");
var dateTime = DateTime.Parse(format);
这完全等同于
var dateTime = DateTime.UtcNow;
在单元测试中,您应该将 DateTime
与 DateTime
进行比较,或者将 string
与 string
进行比较。目前,您正在比较 DateTime
和 string
.
因此您应该将代码更改为:
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")));
我正在尝试格式化 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
。
调试信息:
为什么要这样做?我明确地给它一个格式并改变文化变体 似乎 没有任何效果。
DateTime
对象没有格式。
所以你这里的代码没用:
var format = DateTime.UtcNow.ToString("G");
var dateTime = DateTime.Parse(format);
这完全等同于
var dateTime = DateTime.UtcNow;
在单元测试中,您应该将 DateTime
与 DateTime
进行比较,或者将 string
与 string
进行比较。目前,您正在比较 DateTime
和 string
.
因此您应该将代码更改为:
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")));