2011-09-26 18 views
29

間主張します:1つの文字列と他の はので、私はその後、フロートassertEquals(val1,val2)を呼び出そうとする文字列を変換フロートであるが、これは許可されていないが、私は推測することassertEquals引数としてfloatを受け入れません。JUnitのアサーション:私は2つの値を比較する必要がフロート

この場合私の解決策は何ですか?

答えて

63

あなたがフロートのためのアサーションにデルタを提供しなければならない:

Assert.assertEquals(expected, actual, delta) 

をデルタの両方番号が依然として等しいと見なされているため期待と実際の最大差(デルタ)です。

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

は0.0fのデルタ値も動作しますので、旧式のため、 "=="(注意して使用します!)を比較し、あなたが

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

代わりの

Assert.assertEquals(expected, actual); // Deprecated 
Assert.assertTrue(expected == actual); // Not JUnit 
を書くことができます

私はJUnitが本当に些細なケースでは0.0fにしかならない "デルタ"について本当に考えたことを保証します。

+0

0.0f(太字のテキストを含む回答の編集を含む)を他のものよりも使用することをお勧めします。もっと意味があります。私はこの問題について知らなかったし、0.0fが私に何を意図しているのか理解させた。非推奨または「Not JUnit」の方法では、それはあまり明白ではありません。 – ElMesa

関連する問題