今天在写单元测试时,用到对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的这么简单的断言都不实现呢? 请高手解答
分享到:
2012-07-06 16:00
浏览 3038
评论
JUnit中double类型断言问题解析
在编写单元测试时遇到JUnit对double类型进行相等断言失败的问题。错误提示表明JUnit不直接支持这种断言。解决方案是使用Assert.assertEquals(expected, actual, delta)方法,其中delta参数用于指定浮点数比较的容差值。博客讨论了为何JUnit不默认实现double的等值断言,并提出了转换为Long类型进行断言的临时解决办法。
864

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



