我想比较两个 double 组。使用 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 执行此操作,最好不要创建自定义匹配器(如果可能)。类似于对数组中的每个元素使用“关闭”匹配器。
最佳答案
如果将 a
更改为 Double[]
,则可以执行 assertThat(a, arrayCloseTo(b, .2));
使用此辅助方法:
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);
}
您也可以使用原始数组来实现,但是您需要一个自定义匹配器。
关于java - 我如何使用 Hamcrest 检查 double 组中的每个元素是否为另一个数组中的每个元素的 "close"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623458/