如何测试NUnit中的两个日期是否在某个公差范围内?

如何测试NUnit中的两个日期是否在某个公差范围内?,nunit,Nunit,如何在NUnit中测试两个日期是否在某个公差范围内?将公差转换为刻度,然后使用and约束。有点像 long ticks = mydate.Ticks; long tolerance = 1000; Assert.That( ticks, Is.LessThan( ticks + tolerance ) & Is.GreaterThan( ticks - tolerance ) ); 我会创建一个扩展方法或您自己的断言来实现这一点。从另一个中减去一个,这将为您提供一个TimeSpan值,

如何在NUnit中测试两个日期是否在某个公差范围内?

将公差转换为刻度,然后使用and约束。有点像

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

我会创建一个扩展方法或您自己的断言来实现这一点。

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

例如,如果它们之间的距离需要在10毫秒以内:

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

if(Math.Abs((dt1-dt2.totalmillizes)您可能希望查看脱离约束对象的“in”方法

例如:

Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now.AddMilliseconds(1000)).Within(101));
它通常用于给double和float一个容差,但是由于DateTime最终是double,它可能适合您的需要

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

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