2008-11-11 43 views

回答

4

你可能想看看那生命不息约束对象的“内”的方法。

例如:

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

它通常用来给一个宽容双打和花车,但由于在最后一个DateTime是一个双,它可能会满足您的需求。

1

将您的容差转换为Ticks,然后使用And约束。就像是;

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

我想创建一个扩展方法或您自己的断言来,虽然做到这一点。

1

从另一个中减去一个TimeSpan值,使用TotalXYZ属性(如TotalMilliseconds)获取值,使用Math.Abs​​将其转换为总是正值,然后检查您的值公差值。

举例来说,如果他们需要在10毫秒内相互的:

if (Math.Abs((dt1 - dt2).TotalMilliseconds) <= 10) 
{ 
    CloseEnough(); 
} 
2
TimeSpan tolerance = new TimeSpan(0,1,0); // e.g. 1 minute 

Assert.IsTrue((firstDateTime-SecondDateTime).Duration() > tolerance); 
相关问题