如何使用Hamcrest检查双精度数组中的每个元素是否“接近”另一个数组中的每个元素?
我想比较两个双打arrays。 使用vanilla JUnit,我可以这样做:
double[] a = new double[]{1.0, 2.0, 3.0}; double[] b = new double[]{1.0, 2.0, 3.0}; assertEquals(a, b, 1e-10);
我想知道如何使用Hamcrest,最好不要创建自定义匹配器(如果可能)。 类似于为数组中的每个元素使用“close”匹配器的东西。
如果将a
更改为Double[]
则可以执行assertThat(a, arrayCloseTo(b, .2));
使用这个帮助方法:
public static Matcher arrayCloseTo(double[] array, double error) { List> matchers = new ArrayList>(); for (double d : array) matchers.add(closeTo(d, error)); return arrayContaining(matchers); }
你也可以使用原始数组,但是你需要一个自定义匹配器。