gpt4 book ai didi

java - assertEquals(Double, Double) 和 assertEquals(double, double, delta) 之间的 Junit 区别

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:22 28 4
gpt4 key购买 nike

我有一个 junit 测试断言两个 Double 对象,具有以下内容:

Assert.assertEquals(Double expected, Double result);

这很好,然后我决定将其更改为使用原始 double 而不是它被弃用,除非您还提供 delta。

所以我想知道在这个 assertEquals 中使用 Double 对象或原始类型有什么区别?为什么使用没有增量的对象可以,但是不推荐使用没有增量的基元? Java 是否在后台执行某些已考虑默认增量值的操作?

谢谢。

最佳答案

没有 assert method in JUnit带签名

assertEquals(Double expected, Double result);

但是,有一个对象是通用的:

assertEquals(Object expected, Object result);

这会调用对象的 equals 方法,如您所料,不建议使用它来比较 Double 对象。

对于 double ,正如您所观察到的,绝对有必要使用增量进行比较,以避免浮点舍入问题(已在其他一些答案中解释)。如果您使用带有 double arguments

assertEquals 的 3 参数版本
assertEquals(double expected, double actual, double delta);

您的 Double 将被静静地拆箱为 double 并且一切都会正常工作(您的测试不会意外失败 :-)。

关于java - assertEquals(Double, Double) 和 assertEquals(double, double, delta) 之间的 Junit 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11242224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com