11

値を計算するには 2 つの異なる方法があります。両方のメソッドが実行されると、次のようになります。

decimal a = 145.2344;
decimal b = 145.2345;

私は単体テストを持っています:

  Assert.AreEqual(a,b);

+/- .0001 の差を考慮できるようにしたいと考えています。このルールを追加するにはどうすればよいですか?

4

2 に答える 2

16

NUnit の制約モデルでは、次のことができます。

Assert.That(Math.Abs(a-b), Is.LessThan(0.0001M));

いっそのこと、それを関数にします:

void AssertDiff(decimal a, decimal b, decimal diff = 0.0001) {
     Assert.That(Math.Abs(a-b), Is.LessThan(diff));
}

EDIT: MSユニットテストフレームワークで、これを行います:

void AssertDiff(decimal a, decimal b, decimal diff = 0.0001) {
     Assert.IsTrue(Math.Abs(a-b) < diff);
}
于 2012-12-28T19:09:42.550 に答える
4

単純:

if (Math.Abs(a-b) < 0.0001m)
    // equal
于 2012-12-28T19:09:15.523 に答える