当前位置: 首页 > 知识库问答 >
问题:

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

慎旭尧
2023-03-14

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

我使用了导入静态组织。朱尼特。明确肯定资产质量 我使用了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()返回一个双倍值。

有什么可能是错的?

共有3个答案

曹普松
2023-03-14

assertEquals(double,double)不推荐使用,因为两个double可能相同,但如果它们是计算值,处理器可能会使它们的值略有不同。

如果您尝试这样做,它将失败:assertEquals(.1 .7, .8)。这是使用Intel®处理器测试的。

调用弃用的方法将触发失败("使用assertEquals(预期、实际、增量)比较浮点数");被调用。

范翰海
2023-03-14

人们解释但不提供样品。。。以下是对我有用的东西:

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

最后是0

易风华
2023-03-14

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

如果您注意到,还有另一种方法assertEquals(双预期、双实际、双增量)允许delta精度损失。

JavaDoc:

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

...

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

 类似资料:
  • 问题内容: 我想知道为什么不推荐使用。 我曾经使用过JUnit 4.11。 下面是我的代码: 返回一个双精度值。 有什么事吗 问题答案: 由于double的精度问题而已弃用。 如果您注意到,还有另一种允许精度损失的方法。 JavaDoc: 断言两个双打等于正增量内。如果不是,则会引发AssertionError。如果期望值是无穷大,则将忽略增量值.NaN被视为相等:通过 … delta-期望值与实

  • 为什么在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,以防万一。 问题答案: 是什么赋予了?我可以使用最新的替代供应商吗? 不推荐使用它