我想比较双打两个数组。 使用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,最好不创建自定义匹配器(如果可能)。 一个类似于使用“关闭”匹配为在阵列中的每个元素。
我想比较双打两个数组。 使用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,最好不创建自定义匹配器(如果可能)。 一个类似于使用“关闭”匹配为在阵列中的每个元素。
如果更改a
到Double[]
那么你可以做assertThat(a, arrayCloseTo(b, .2));
这个helper方法:
public static Matcher<Double[]> arrayCloseTo(double[] array, double error) {
List<Matcher<? super Double>> matchers = new ArrayList<Matcher<? super Double>>();
for (double d : array)
matchers.add(closeTo(d, error));
return arrayContaining(matchers);
}
您可以使用基本数组做得一样好,但你需要的是一个自定义的匹配。