C#,NUnit:是否可以测试DateTime与另一个非常接近,但不一定相等?

Svi*_*ish 16 c# datetime nunit unit-testing

说我有这个测试:

[Test]
public void SomeTest()
{
    var message = new Thing("foobar");
    Assert.That(thing.Created, Is.EqualTo(DateTime.Now));
}
Run Code Online (Sandbox Code Playgroud)

例如,这可能使Thing的构造函数失败了一段时间.是否有某种NUnit构造允许我指定Created时间不必完全相等DateTime.Now,只要它例如在一秒之内?

是的,我知道构造函数不应该花费太多时间,但仅作为一个例子:p

Jon*_*eet 36

我没有尝试过,但根据文档看起来这应该工作:

Assert.That(thing.Created, Is.EqualTo(DateTime.Now).Within(1).Minutes);
Run Code Online (Sandbox Code Playgroud)

我不能说我通常很喜欢约束系统 - 我是Assert.AreEqual粉丝 - 但这个特殊的构造相当简洁.

(作为一个原则,我应该注意你最好通过某种"时钟"接口作为依赖,然后你就不会有任何不准确.你可以伪造它进行测试,并使用系统时钟用于生产.)