web-dev-qa-db-ja.com

JUnitアサーション:フロート間のアサーションを作成します

私は2つの値を比較する必要があります:1つは文字列で、もう1つは浮動小数点ですので、文字列を浮動小数点に変換してからassertEquals(val1,val2)を呼び出しますが、これは許可されていません、assertEqualsは引数。

この場合の私にとっての解決策は何ですか?

36
lola

フロートのアサーションにデルタを提供する必要があります。

Assert.assertEquals(expected, actual, delta)

デルタは、両方の数値がまだ等しいと見なされる、期待値と実際の値の最大差(デルタ)です。

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false
79
oers

0.0fのデルタ値も機能するため、昔ながらの「==」比較(注意して使用してください!)

Assert.assertEquals(expected, actual, 0.0f);

の代わりに

Assert.assertEquals(expected, actual); // Deprecated
Assert.assertTrue(expected == actual); // Not JUnit

私はJUnitが「デルタ」について本当に考えていることを保証する方法が好きです。これは本当に些細な場合にのみ0.0fであるべきです。

7
RedXIII