如何在NUnit中测试两个日期是否在一定的容差范围内?

时间:2008-11-11 18:50:32

标签: nunit

如何在NUnit中测试两个日期是否在一定的容差范围内?

4 个答案:

答案 0 :(得分:4)

您可能希望查看以Constraint对象为生的“Within”方法。

例如:

Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now.AddMilliseconds(1000)).Within(101));

它通常用于对双打和浮点数进行容差,但由于最终DateTime是双倍的,它可能适合您的需要。

答案 1 :(得分:2)

TimeSpan tolerance = new TimeSpan(0,1,0);  // e.g. 1 minute

Assert.IsTrue((firstDateTime-SecondDateTime).Duration() > tolerance);

答案 2 :(得分:1)

将您的容差转换为Ticks,然后使用And约束。喜欢的东西;

long ticks = mydate.Ticks;
long tolerance = 1000;
Assert.That( ticks, Is.LessThan( ticks + tolerance ) & Is.GreaterThan( ticks - tolerance ) );

我会创建一个扩展方法或你自己的Assert来做到这一点。

答案 3 :(得分:1)

从另一个中减去一个,它为您提供TimeSpan值,使用TotalXYZ属性(如TotalMilliseconds)获取值,使用Math.Abs​​将其转换为始终为正值,并检查您的容差值。

例如,如果他们需要在10毫秒之内:

if (Math.Abs((dt1 - dt2).TotalMilliseconds) <= 10)
{
    CloseEnough();
}