如何测试两个日期是否在 NUnit 中的某个容差范围内?
Josh Kodroff
问问题
294 次
4 回答
4
您可能想查看依赖于 Constraint 对象的“Within”方法。
例如:
Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now.AddMilliseconds(1000)).Within(101));
它通常用于对双精度和浮点数提供容差,但由于最终 DateTime 是双精度,它可能适合您的需要。
于 2008-11-11T20:32:44.413 回答
2
TimeSpan tolerance = new TimeSpan(0,1,0); // e.g. 1 minute
Assert.IsTrue((firstDateTime-SecondDateTime).Duration() > tolerance);
于 2011-07-13T14:57:41.450 回答
1
将您的公差转换为刻度,然后使用 And 约束。就像是;
long ticks = mydate.Ticks;
long tolerance = 1000;
Assert.That( ticks, Is.LessThan( ticks + tolerance ) & Is.GreaterThan( ticks - tolerance ) );
不过,我会创建一个扩展方法或您自己的 Assert 来执行此操作。
于 2008-11-11T19:09:19.217 回答
1
从另一个中减去一个,得到一个 TimeSpan 值,使用 TotalXYZ 属性(如 TotalMilliseconds)获取一个值,使用 Math.Abs 将其转换为始终为正的值,并检查您的容差值。
例如,如果它们需要在 10 毫秒内:
if (Math.Abs((dt1 - dt2).TotalMilliseconds) <= 10)
{
CloseEnough();
}
于 2008-11-11T19:11:57.527 回答