2016-02-22 33 views
5

Sto tentando di affermare che il mio doppio è NaN. Ecco un frammento di codice:Java Assert Double is NaN

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

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

Il codice non viene compilato, Double.NaN è definito come primitivo

public static final double NaN = 0.0d/0.0; 

Per far funzionare l'asserzione Mi avvolgo NaN con un oggetto doppio.

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

C'è un modo più breve per farlo?

+2

Meglio è una questione di opinione –

risposta

6

Si potrebbe utilizzare:

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

Double.NaN valori non possono essere confrontati con == (Double.NaN == Double.NaN tornerà false), perché NaN è considerato come uno speciale.

Maggiori informazioni:

1

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

o

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

modo migliore di fare questo

ciò che meglio illustra l'intento? In che modo puoi leggere e vedere facilmente che cosa sta testando il metodo?

0

Più breve è Double.valueOf("NaN") o con un'importazione statica valueOf("NaN"), ma è praticamente lo stesso di quello che hai già.

1

si potrebbe provare la seguente:

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

Spero che questo ti ha aiutato.