menu
書いてる野郎
orebike@gmail.com
assertThat(hoge, comparesEqualTo(new BigDecimal(123L)));
comparesEqualTo を使う
数学系の操作をした場合コンピュータの精度の問題で微妙に値がズレてしまうような状況がある。
例えば 角度90度に対する cos の値は数学的にはゼロだが Java で計算すると
6.123233995736766E-17
10のマイナス17乗なので、非常に小さな値だということはわかるが、ゼロでは無い。 これは円周率を概算値で使っていることが起因の誤差でどうしても出てしまう。 しかしテストする側からするとやっかいである。値が定まらないから。
そこで誤差付きの検証メソッドがあるのでそれを使う
assertThat(cosValue, is(closeTo(0.0D, 0.001D)));
このように closeTo メソッドを使うと第一引数に期待値、第二引数に誤差を指定して検証できる。 今回ならば自動的に 0.0 から プラマイ0.001 の範囲に答えが収まっているかをチェックしてくれる。