質問

私は職場でいくつかのユニットテストを行っていましたが、その主張の1つに対して独特のエラーが発生しました。 expectsvalueとactualvalueはどちらもダブルであることに注意してください。

Assert.AreEqual(expectedValue, actualValue);

例外は、それらが等しくないと述べ、「期待値:<6.8>実際の値:<6.8>」を詳しく説明しました。

期待値はハードコードされた6.8であり、実際の値は、分類方法(等しいレコードやジェンクの自然ブレイクなど)を使用するデータベース値を使用して策定されます。

私の推測では、違いはおそらく、2つの値のマンティサが最も重要なビットまで似ているということです。テストを更新して、2つの値が十分に近いかどうかを確認するためにテストを更新しましたが、マンティッサにそのダブルを表示した場合の表示値と一致させる方法があるかどうかに興味があります。そのようなマンティッサの修正は存在しますか?

役に立ちましたか?

解決

マンティッサにディスプレイ値に一致するように強制することによって、私はあなたが何を意味するのか完全にはわかりません...そこに それは たとえば、正確に0.1の二重値はありません。

いくつかのコードを表示したい場合 ちょうど ダブルの価値、しかし、私は doubleconverter.cs 簡単にするファイル:

 double d = 0.1;
 string x = DoubleConverter.ToExactString(d);

もう1つの選択肢は、doubleに双方向に変換するときに往復形式の仕様( "r")を使用することです。これにより、結果が後で同じ値を再現するのに十分な情報があることが保証されます。言い換えれば、if x != y, 、 それから x.ToString("r") != y.ToString("r").

他のヒント

両方を文字列に変換できます。 actualValue.ToString("0.000") それらの文字列を比較します。

それはあなたの要件を密接に一致させるために作られる可能性があります。

デフォルトの表示値が一致するかどうかをテストする場合は、デフォルトの表示値を比較してください。

Assert.AreEqual(expectedValue.ToString(), actualValue.ToString());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top