3

2つの日付がNUnitの特定の許容範囲内にあるかどうかをテストするにはどうすればよいですか?

4

4 に答える 4

4

Constraint オブジェクトから離れた "Within" メソッドを見てみるとよいでしょう。

例えば:

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

通常、double と float に許容範囲を与えるために使用されますが、最終的に DateTime は double であるため、ニーズに合う場合があります。

于 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

TimeSpan値を取得する一方を他方から減算し、TotalXYZプロパティ(TotalMillisecondsなど)を使用して値を取得し、Math.Abs​​を使用して常に正の値に変換し、許容値と照合します。

たとえば、それらが互いに10ミリ秒以内にある必要がある場合:

if (Math.Abs((dt1 - dt2).TotalMilliseconds) <= 10)
{
    CloseEnough();
}
于 2008-11-11T19:11:57.527 に答える
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 に答える