如何使用JUnit和Hamcrest比较双打?

时间:2015-12-18 16:03:24

标签: java junit hamcrest

我正在使用JUnit和Hamcrest编写单元测试。我一直在使用以下方法比较双值:

assertThat(result, is(0.5));

但是,我现在需要比较计算值,并且我不想与完整的双倍值进行比较。相反,我想比较接近。

我发现了一个名为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)); 

3 个答案:

答案 0 :(得分:18)

您应该可以致电Matchers.closeTo(double, double)。使用静态导入,它看起来像:

assertThat(result, closeTo(0.5, 0.1));

答案 1 :(得分:1)

如果使用,可以使阅读效果更好

assertThat(actual, is(closeTo(expected, delta)));

使用

import static org.hamcrest.Matchers.closeTo;
import static org.hamcrest.Matchers.is;

答案 2 :(得分:0)

刚刚完成,is实际上返回了一个Is对象,所以我需要做的就是:

assertThat(result, new IsCloseTo(0.5, 0.1)); 

但是来自nickb的答案更好。