Android Studio で Hamcrest の closeTo マッチャーを使いたい
モジュールの build.gradle ファイルの dependencies に以下を追加する。hamcrest.org からライブラリをダウンロードするまでもありません。
dependencies { // ... testCompile 'junit:junit:4.12' testCompile 'org.hamcrest:hamcrest-library:1.3' }
もう一つの方法(追記)
「File > Project Structure」で開いたダイアログでモジュールの設定の Dependencies タブを選択し、「+」ボタンをクリックして「1 Library dependency」を選択すると「Choose Dependency」ダイアログが表示されます。そこで org.hamcrest を検索するとライブラリがリストアップされるので、そこから選びます。
そして、モジュールの build.gradle ファイルの dependencies に挿入された org.hamcrest の行の先頭を compile から testCompile に変更します。
なぜ closeTo を使いたいのか
JUnit4 で浮動小数点の比較をするアサーションを書くとします。
assertThat(2.32 * 3, equalTo(6.96));
とすると、成功するように見えて失敗します。浮動小数点の演算で「2.32 * 2」が 6.95999999999 となってしまうためです。
そこで、ある程度の誤差を見込んで:
assertTrue(Match.abs((2.32 * 3) - 6.96) < 0.0005);
のようにすることもできます。が、これでは失敗したときのメッセージも分かりにくくなります。
そこで Hamcrest の closeTo() というマッチャーを使えば:
import static org.hamcrest.number.IsCloseTo.*; // ... assertThat(2.32 * 3, closeTo(6.96, 0.0005);
と書けるようになります。