簡體   English   中英

Java Junit4:ArrayList的assertEquals <Double> 單精度期望值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM