1. ホーム
  2. java

[解決済み] なぜJUnitではassertEquals(double,double)は非推奨なのですか?

2023-05-30 08:23:47

質問

私は、なぜ assertEquals(double, double) が非推奨なのか不思議でした。

私が使っていた import static org.junit.Assert.assertEquals; で、JUnit 4.11を使用しました。

以下は私のコードです。

import org.junit.Test;
import static org.junit.Assert.assertEquals;


public class AccountTest {

@Test
public void test() {
    Account checking = new Account(Account.CHECKING);
    checking.deposit(1000.0);
    checking.withdraw(100.0);
    assertEquals(900.0, checking.getBalance());
   }
}

checking.getBalance() はdouble値を返します。

何が間違っているのでしょうか?

どのように解決するのですか?

doubleの精度の問題で非推奨です。

注意すると、別のメソッド assertEquals(double expected, double actual, double delta) を許可するもので、これは delta の精度が落ちます。

JavaDoc :

<ブロッククオート

2つのdoubleが正のデルタの範囲内で等しいことを保証する。等しくない場合、AssertionErrorが投げられる。もし期待値が無限大であれば、デルタ値は無視され、NaNは等しいとみなされる。 assertEquals(Double.NaN, Double.NaN, *) パス

...

delta - 両方の数値がまだ等しいとみなされる、予想と実際の間の最大の差分です。