今天在写单元测试时,用到对double类型进行断言相等时出现的问题
代码:Assert.assertEquals(1.0, 1.0);
异常:
java.lang.AssertionError: Use assertEquals(expected, actual, delta) to compare floating-point numbers
... ...
附加源码
static public void assertEquals(double expected, double actual) {
assertEquals(null, expected, actual);
}
static public void assertEquals(String message, double expected, double actual) {
fail("Use assertEquals(expected, actual, delta) to compare floating-point numbers");
}
从以上的代码可以看出JUnit本身不支持double类型的等值断言。
所以解决的办法就是Assert.assertEquals((Double) 1.0, (Double) 1.0); 强转成 long类型
但是还不知道为什么JUnit的这么简单的断言都不实现呢? 请高手解答
本文讨论了在使用JUnit进行单元测试时遇到的double类型等值断言问题,并提供了解决方案:通过强转为Double类型进行比较。解释了JUnit本身不支持直接进行双精度浮点数等值断言的原因。
868

被折叠的 条评论
为什么被折叠?



