java - 我如何使用 Hamcrest 检查 double 组中的每个元素是否为另一个数组中的每个元素的 "close"?

标签 java junit hamcrest

我想比较两个 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/

相关文章:

java - 想列出内部存储和外部存储上的所有音乐文件,但在 Android 10 上无法完成

java - hamcrest 中的严格匹配?

java - 通过 RestAssured 在 JSON 中进行多个匹配断言

java - 如何在不打开浏览器窗口的情况下运行测试用例?

java - 分析 Java 应用程序 : Cumulative times for methods recursively

garbage-collection - 什么时候在java中使用垃圾收集器?

java - 如何模拟返回模拟对象的方法

java - ElasticSearchTestCase:使用ESIntegTestCase创建客户端实例时

java - 如何在 Maven 中添加单元测试的类路径?

python - 如何在Hamcrest中组合多个assert_that?