为什么在 JUnit 中不推荐使用 assertEquals(double,double)? [英] Why is assertEquals(double,double) deprecated in JUnit?

查看:40
本文介绍了为什么在 JUnit 中不推荐使用 assertEquals(double,double)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道为什么不推荐使用 assertEquals(double, double).

I was wondering why assertEquals(double, double) is deprecated.

我使用了 import static org.junit.Assert.assertEquals; 并且我使用了 JUnit 4.11.

I used import static org.junit.Assert.assertEquals; and I used 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() 返回双精度值.

可能有什么问题?

推荐答案

由于双精度问题,已弃用.

It's deprecated because of the double's precision problems.

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

If you note, there's another method assertEquals(double expected, double actual, double delta) which allows a delta precision loss.

JavaDoc:

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

Asserts that two doubles are equal to within a positive delta. If they are not, an AssertionError is thrown. If the expected value is infinity then the delta value is ignored.NaNs are considered equal: assertEquals(Double.NaN, Double.NaN, *) passes

...

delta - 两个数字仍被视为相等的预期和实际之间的最大差值.

delta - the maximum delta between expected and actual for which both numbers are still considered equal.

这篇关于为什么在 JUnit 中不推荐使用 assertEquals(double,double)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆