2009-10-19 8 views
6

Es scheint Assert.assertArrayEquals() Methoden in Junit4 für alle anderen Primitiven als Doppel, z.Warum hat junit4 Assert.assertArrayEquals() für double [] s nicht?

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

und

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

aber nicht

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

oder

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

(letztere für variable Bereiche Doppel zu berücksichtigen). Gibt es einen fundamentalen Grund, warum ich eine solche Funktion nicht schreiben sollte?

Antwort

6

Es hat eine solche Methode (in 4.7), obwohl es nicht auf der Online-Javadoc here dokumentiert ist. Es war sicherlich ein Versehen in der Javadoc/Version, aber es ist jetzt da.

7

Die Methode scheint in JUnit 4.6 hinzugefügt worden zu sein, fehlt aber aus bestimmten Gründen in Version 4.5 und früheren Versionen. Ich würde keine Probleme erwarten, auf eine neuere JUnit-Version zu aktualisieren.

1

Laut der JUnit Bug-Datenbank sind sie "working on it". Basierend auf anderen Antworten klingt es so, als ob die Fehlerdatenbank nicht vollständig mit der Realität übereinstimmt.

0

nur verwenden:

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

Sie könnten diese benötigen, um Ihre Ergebniswerte abzurunden gegen erwarten zu testen:

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

javdoc Siehe für weitere Informationen

Verwandte Themen