有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Junit4:ArrayList<Double>的assertEquals,预期值为单精度

我正在为ArrayList<Double>的Java变量编写JUnit测试。复杂的是,我的期望值是单精度,而Java的Double是双精度。因此,由于精度错误,这样做assertEquals(expected_array_list, actual_array_list)无法通过

我的解决方法是迭代所有元素和assertEquals每对双精度,将epsilon值设置为适当的值。是否有一种方法可以为整个ArrayList设置epsilon,而不必将其分解为元素


共 (1) 个答案

  1. # 1 楼答案

    JUnit4.6及更高版本有一个方便的方法^{}方法(根据规范,对于String消息有一个重载变量)。在Java 8中,您可以非常轻松地将这些List转换为基本数组,只需使用它:

    double delta = 0.05; // or any other reasonable value
    double[] expectedArray = 
        expectedList.stream().mapToDouble(Double::doubleValue).toArray();
    double[] actualArray = 
        actualList.stream().mapToDouble(Double::doubleValue).toArray();
    assertArrayEqulas(expectedArray, actualArray, delta);