当前位置: 首页 > 面试题库 >

为什么在JUnit中不推荐使用assertEquals(double,double)?

葛承嗣
2023-03-14
问题内容

我想知道为什么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的精度问题而已弃用。

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

JavaDoc:

断言两个双打等于正增量内。如果不是,则会引发AssertionError。如果期望值是无穷大,则将忽略增量值.NaN被视为相等:assertEquals(Double.NaN, Double.NaN, *)通过

delta-期望值与实际值之间的最大差额,对于这两个数字,仍然认为相等。



 类似资料:
  • 我想知道为什么不推荐使用。 我使用了导入静态组织。朱尼特。明确肯定资产质量 我使用了JUnit 4.11。 下面是我的代码: 返回一个双倍值。 有什么可能是错的?

  • 为什么在JUnit5中不再推荐assertEquals(double,double)?

  • 问题内容: 我进行了一个junit测试,使用以下命令声明了两个Double对象: 很好,然后我决定将其更改为使用原始double,除非您也提供了增量,否则该结果被弃用了。 所以我想知道在assertEquals中使用Double对象还是原始类型有什么区别?为什么不使用不带增量的对象,但不推荐使用不带增量的基元呢?Java是否在后台执行了已经考虑了默认增量值的操作? 谢谢。 问题答案: 没有断言方法

  • 问题内容: 众所周知,Java 中的接口已损坏。造成这种情况的原因很多,我将不再赘述。其他人已经做到了。这也是Java架构师本身的立场。 因此,我的问题是:为什么还不被弃用?如果核心Java团队已确定它已损坏,那么他们还必须考虑过时。他们反对这样做的原因是什么(在Java 8中仍不建议弃用)? 问题答案: 有一个错误在1997年提交给Java的错误数据库有关添加方法,所以将不再是无用的。它以“无法

  • 问题内容: 我曾经在hibernate 3中使用getHibernateTemplate(),现在我转向了Hibernate 4,在这里我找不到以下类: 在这里我已经阅读过有关它的更多信息,不建议使用 http://forum.springsource.org/showthread.php?117227-Missing-Hibernate- Classes-Interfaces-in-spring

  • 问题内容: 我正在将hibernate项目配置为使用第二级缓存提供程序,以便可以利用查询缓存。 我向ehcache添加了一个依赖项: 我认为我要使用的提供程序类是: 在eclipse中查看引用的库时,我在和上都看到了注释。是什么赋予了?我可以使用最新的替代供应商吗? 我正在使用hibernate版本3.4.0.GA,以防万一。 问题答案: 是什么赋予了?我可以使用最新的替代供应商吗? 不推荐使用它