原代码:
Assert.assertEquals(29.9, discountObj.getPrice());
JUnit 4.13.2 警告:'assertEquals(double, double)' is deprecated
错误原因在于:浮点数运算可能不精确,导致出现本来该相等的小数却不相等的现象。
事实上,JUnit提供了Assert.assertEquals(double, double)
的重载方法Assert.assertEquals(double, double, double)
来解决此问题。其中,最后一个double参数命名为delta
,表示可接受的误差范围,如1e-6
。
当时改的是:
Assert.assertEquals(discount.getPrice(), 29.9, 1e-6);
这个warning也启示我们:浮点运算后的浮点数相等判定不能仅仅用==
来进行,还要考虑误差取舍。