假设我有一个测试:
[Test]
public void SomeTest()
{
var message = new Thing("foobar");
Assert.That(thing.Created, Is.EqualTo(DateTime.Now));
}例如,这可能会失败,事物的构造函数花费了一些时间。是否有某种NUnit构造,允许我指定Created时间不一定与DateTime.Now完全相等,只要它在1秒内就可以了?
是的,我知道构造函数不需要花费太多的时间,只是举个例子:p
发布于 2009-11-24 20:49:27
我还没有试过它,但是根据医生们的说法,它看起来应该能用:
Assert.That(thing.Created, Is.EqualTo(DateTime.Now).Within(1).Minutes);我不能说我通常很喜欢约束系统--我是Assert.AreEqual的拥护者--但是这个特殊的构造相当简洁。
(作为一项原则,我应该指出,最好将某种“时钟”接口作为依赖项传递,这样就不会有任何不准确的地方了。你可以在测试中伪造它,并使用系统时钟进行生产。)
发布于 2009-11-24 20:52:08
检查TimeSpan对象--使用TimeSpan比较两个日期,并检查这些值是否在阈值之内。
TimeSpan span = thing.Created - DateTime.Now;
if(span.TotalSeconds <= 1)
[..]发布于 2009-11-24 20:53:26
你需要从定义“非常接近”开始。如果你所说的“非常接近”指的是几百条蜱,那么你可以这样做:
Assert.That(200, Is.LessThanOrEqualTo(DateTime.Now.Ticks - thing.Created.Ticks));然后,每当你有日期在200内,你的测试合格。
https://stackoverflow.com/questions/1792817
复制相似问题