2016-02-22 28 views
5

Ich versuche zu behaupten, dass mein Double NaN ist. Hier ist ein Code-Snippet ist:Java Assert Double ist NaN

private Double calculateIt(String input){...} 

assertEquals(Double.NaN, calculateIt("input text")); 

Der Code nicht kompiliert wird Double.NaN definiert als primitive

public static final double NaN = 0.0d/0.0; 

Um die Behauptung Arbeit, die ich mit einem Doppel Objekt wickeln NaN zu machen.

assertEquals(new Double(Double.NaN), calculateIt("input text")); 

Gibt es einen kürzeren Weg, dies zu tun?

+2

Besser ist eine Frage der Meinung –

Antwort

6

könnten Sie verwenden:

boolean isNan = Double.isNaN(calculateIt("input text")); 
assertTrue(isNan); 

Double.NaN Werte können nicht mit == verglichen werden (Double.NaN == Double.NaN wird false zurück), weil NaN als besonderes betrachtet wird.

Weitere Informationen:

1

assertEquals(Double.NaN, calculateIt(...), 0.0) mit assertEquals(double, double, double)

oder

assertThat(calculateIt(...), isNan()) mit Hamcrest.

besserer Weg, dies zu tun

Was am besten die Absicht zeigt? Was können Sie lesen und sehen, was die Methode testet?

0

Kürzere ist Double.valueOf("NaN") oder mit einem statischen Import valueOf("NaN"), aber es ist im Grunde das gleiche wie Sie bereits haben.

1

könnten Sie versuchen, die folgenden:

assertTrue(Double.compare(Double.NaN, calculateIt("input text"))); 

Hope this Ihnen geholfen.