web-dev-qa-db-ja.com

JUnitとHamcrestを使用してdoubleを比較するにはどうすればよいですか?

JUnitとHamcrestを使用して単体テストを作成しています。私は以下を使用してdouble値を比較しています:

assertThat(result, is(0.5));

ただし、計算値を比較する必要があり、完全なdouble値と比較する必要はありません。代わりに、近さを比較したいと思います。

IsCloseToというクラスを発見しましたが、assertThatでの使用方法がわからず、オンラインで例を見つけることができません。

次のようなことをするための正しい構文は何ですか?

// I can't do this as I need to know what methods/classes whatever I should be using
// isCloseTo doesn't exist.
assertThat(result, isCloseTo(0.5, 0.1)); 
13
Tim B

Matchers.closeTo(double, double) を呼び出すことができるはずです。静的インポートでは、次のようになります。

assertThat(result, closeTo(0.5, 0.1));
19
nickb

を使用すると、これを読みやすくすることができます

assertThat(actual, is(closeTo(expected, delta)));

import static org.hamcrest.Matchers.closeTo;
import static org.hamcrest.Matchers.is;
2
James Mudd

うまくいったので、isは実際にはIsオブジェクトを返すので、私がする必要があるのは次のことだけでした。

assertThat(result, new IsCloseTo(0.5, 0.1)); 

Nickbからの答えはしかしより良いです。

0
Tim B