2009-10-19 64 views
6

在Junit4中,對於除雙重以外的所有基元似乎都有Assert.assertArrayEquals()方法,例如,爲什麼junit4沒有Assert.assertArrayEquals()for double [] s?

Assert.assertArrayEquals(int[] expected, int[] actual) 

Assert.assertArrayEquals(char[] expected, char[] actual) 

但不

Assert.assertArrayEquals(double[] expected, double[] actual, double eps) 

Assert.assertArrayEquals(double[] expected, double[] actual, double[] eps) 

(後者佔雙打的變量範圍)。爲什麼我不應該寫這樣的功能有一個根本原因嗎?

回答

6

它確實有這樣一種方法(在4.7中),雖然它沒有記錄在線上的javadoc here。這當然是javadoc /版本中的一個疏忽,但它現在在那裏。

7

該方法似乎已被添加到JUnit 4.6中,但由於某些原因4.5和以前的版本中缺少該方法。我不希望升級到更新的JUnit版本時出現任何問題。

1

根據JUnit bug數據庫,他們是「working on it」。根據其他答案,這聽起來像錯誤數據庫不完全與現實同步。

0

只需使用:

AssertTrue(**message**, Arrays.equals(**expected**,**result**) 

您可能需要這圓你的結果值來測試與預期:

public double roundTo2Decimals(double val) { 
    DecimalFormat df2 = new DecimalFormat("###.####"); 
    return Double.valueOf(df2.format(val)); 
} 

更多信息

javdoc
相關問題