Java Junit4:具有单精度期望值的ArrayList <double>的assertEquals

时间:2016-05-31 18:51:10

标签: java arraylist junit junit4 precision

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

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

1 个答案:

答案 0 :(得分:4)

JUnit 4.6及更高版本有一个方便的方法assertArrayEquals(double[] expected, double[] actual, double delta)方法(根据规范,有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);