C#,NUnit : Is it possible to test that a DateTime is very close, 但不一定等于另一个?

标签 c# unit-testing datetime nunit

假设我有这个测试:

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

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

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

最佳答案

没试过,但根据the docs看起来这应该可行:

Assert.That(thing.Created, Is.EqualTo(DateTime.Now).Within(1).Minutes);

我不能说我通常是约束系统的忠实拥护者 - 我是 Assert.AreEqual 的忠实拥护者 - 但那个特定的构造相当简洁。

(作为原则,我应该指出,您最好将某种“时钟”接口(interface)作为依赖项传递进来,这样就不会有任何不准确之处。您可以为测试伪造它,并使用系统时钟进行生产。)

关于C#,NUnit : Is it possible to test that a DateTime is very close, 但不一定等于另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792817/

相关文章:

c# - MongoDB C# Driver 2.0 - 更新文档

c# - ItemsControl 与其项目源不一致 - WPF 列表框

c# - 字节流单元测试

php - 更改服务器时区后更新 MySQL 数据库中的时间戳

ruby-on-rails - time_ago_in_words => "in {{count}} days."吗?

c# - 对于新的 .net 核心应用程序,我应该在 protobuf-net 和 google.protobuf 之间使用什么 NuGet 包?

c# - 如何在 C# 中将 JSONObject 反序列化为 JSONArray

c++ - Boost.Spirit 的单元测试

node.js - npm test 命令未运行?

java - 通过 DateTimeFormatter.forPattern 解析字符串