为什么 assertEquals(double,double) 在 JUnit 中被弃用?

2022-08-31 11:37:31

我想知道为什么被弃用。assertEquals(double, double)

我使用过JUnit 4.11。import static org.junit.Assert.assertEquals;

以下是我的代码:

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()返回双精度值。

可能出了什么问题?


答案 1

由于双精度问题,它被弃用。

如果您注意到,还有另一种方法允许精度损失。assertEquals(double expected, double actual, double delta)delta

JavaDoc

断言两个双精度等于在正增量内。如果不是,则抛出断言错误。如果预期值为无穷大,则忽略增量值。NaN 被认为是相等的:通过assertEquals(Double.NaN, Double.NaN, *)

...

delta - 预期和实际之间的最大增量,两个数字仍然被视为相等。


答案 2

人们解释但不给样品...所以这里对我做了什么:

@Test
public void WhenMakingDepositAccountBalanceIncreases() {
    Account account = new Account();
    account.makeDeposit(10.0);
    assertEquals("Account balance was not correct.", 10.0, account.getBalance(), 0);
}

最后;0


推荐