主な違いは次のとおりです。
assert_in_delta
は絶対誤差用です。
assert_in_epsilon
は相対誤差です。
これらは、2 つの異なるタイプの近似誤差です。
絶対誤差は、正確な値と近似値の差の大きさです。
相対誤差は、絶対誤差を正確な値の大きさで割ったものです。
assert_in_delta
最も理解しやすく、テストで最も一般的に使用されます。
ドキュメントの例:assert_in_delta Math::PI, (22.0 / 7.0), 0.01
では、このアサーションは、許可されている よりも小さいため、合格します。22.0/7 - Math::PI == 0.001264...
delta
0.01
(ウィキペディアより)
assert_in_epsilon
大きく異なるサイズの数の近似値を比較するためによく使用されます。
たとえば、ほとんどのアプリケーションでは、1,000
絶対誤差がの数値を概算することは、絶対誤差が 最初のケースでは相対誤差はであり、2 番目のケースでは のみです。3
1,000,000
3
0.003
0.000003
この例を に書くためにMiniTest
、チェックしたい 2 つの値の配列がそれぞれ「ほぼ等しい」1,000
であるとし1,000,000
ます。次のように記述できます。
# Using the default `epsilon` of 0.001
assert_in_epsilon(1_000, actual[0])
assert_in_epsilon(1_000_000, actual[1])
これは、次のように書くことと機能的に同等です。
assert_in_delta(1_000, actual[0], 1)
assert_in_delta(1_000_000, actual[1], 1000)