[英]Java Junit4: assertEquals for ArrayList<Double> with single precision expected values
我正在為ArrayList<Double>
的Java變量編寫JUnit測試。 復雜的是,我的期望值是單精度,而Java的Double
是雙精度。 因此assertEquals(expected_array_list, actual_array_list)
由於精度錯誤assertEquals(expected_array_list, actual_array_list)
執行assertEquals(expected_array_list, actual_array_list)
不會通過。
我的變通辦法是遍歷所有元素,並assertEquals
每一對double都assertEquals
,將epsilon
值設置為適當的值。 有沒有一種方法可以為整個ArrayList
設置epsilon
,而不必將其分解為元素?
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.