2011-09-26 12 views
29

ho bisogno di confrontare due valori: uno di una stringa e l'altra è flottante quindi convertire la stringa di galleggiare quindi provare a chiamare assertEquals(val1,val2), ma questo non è autorizzata, credo che il assertEquals non accetta float come argomenti.asserzioni JUnit: rendere l'affermazione tra i carri

Qual è la soluzione per me in questo caso?

risposta

63

è necessario fornire un delta per l'affermazione per Galleggianti:

Assert.assertEquals(expected, actual, delta) 

Mentre delta è la differenza massima (delta) tra il previsto e reale per il quale entrambi i numeri sono ancora considerati uguali.

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true 
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false 
5

Un delta-valore 0.0f funziona anche, quindi per vecchio stile "==" confronta (usare con cautela!), È possibile scrivere

Assert.assertEquals(expected, actual, 0.0f); 

invece di

Assert.assertEquals(expected, actual); // Deprecated 
Assert.assertTrue(expected == actual); // Not JUnit 

Mi piace il modo in cui JUnit garantisce che hai veramente pensato al "delta" che dovrebbe essere solo 0.0f in casi davvero banali.

+0

Suggerirei di usare 0.0f (inclusa una modifica di risposta con testo in grassetto) sopra gli altri perché è più semantico. Non sapevo di questo problema e il file 0.0f potrebbe portarmi a capire cosa si intende. Con il modo deprecato o "Non JUnit" sarebbe meno ovvio. – ElMesa