我正在使用JUnit和Hamcrest编写一个单元测试。我一直在使用双精度值进行比较:
assertThat(result, is(0.5));
但是,我现在需要比较计算值,我不想必须与完整的double值进行比较。相反,我想比较亲密度。
我发现了一个名为IsCloseTo
的类,但我不确定如何在assertThat
中使用它,而且我在网上找不到任何示例。
什么是正确的语法来做类似下面的事情?
// I can't do this as I need to know what methods/classes whatever I should be using
// isCloseTo doesn't exist.
assertThat(result, isCloseTo(0.5, 0.1));
4条答案
按热度按时间np8igboo1#
您应该可以调用
Matchers.closeTo(double, double)
。使用静态导入,它看起来像:g52tjvyc2#
你可以让这个读起来更好,如果你使用
与
ippsafx73#
刚刚计算出来,
is
实际上返回了一个Is
对象,所以我需要做的就是:尼克的回答更好。
nfs0ujit4#
一个好的方法是使用
closeTo()
匹配器(正如其他人所指出的那样),使用Math.ulp()
来产生错误值。What should be the epsilon value when performing double value equal comparison更多讨论我打开了Hamcrest Issue #402,请求将此功能添加到Hamcrest中,作为一个更简单的closeTo()
方法,自动计算错误值。