2011-09-26 5 views
29

que necesito para comparar dos valores: uno de una cadena y el otro es flotar así que convertir la cadena a flotar a continuación, intenta llamar assertEquals(val1,val2) pero esto no está autorizado, supongo que la assertEquals no acepta float como argumentosafirmaciones JUnit: hacer la afirmación entre flotantes

¿Cuál es la solución para mí en este caso?

Respuesta

63

usted tiene que proporcionar un delta a la afirmación de flotadores:

Assert.assertEquals(expected, actual, delta) 

Mientras delta es la diferencia máxima (delta) entre los resultados esperados y reales para los que ambos números todavía se consideran iguales.

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

Un delta-valor de 0.0f también funciona, por lo que para pasado de moda "==" compara (uso con cuidado!), Se puede escribir

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

en lugar de

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

Me gusta la forma en que JUnit asegura que realmente pensaste en el "delta" que solo debería ser 0.0f en casos realmente triviales.

+0

Sugiero usar el 0.0f (incluyendo una edición de respuestas con texto en negrita) sobre los demás porque es más semántico. No sabía acerca de este problema y el 0.0f podría llevarme a entender lo que se pretende. Con la forma obsoleta o "No JUnit" sería menos obvio. – ElMesa

Cuestiones relacionadas