JUnit y la mayoría de los frameworks de testing suelen ser bastante buenos generando mensajes explicativos cuando falla un assert. Esto me ha creado la mala costumbre de no proporcionar mis propios mensajes de error.
El problema aparece con los métodos del tipo assertNull
/ assertNotNull
/ assertTrue
/ asserFalse
, dónde lo único que se ve en el mensaje de error es la (muy fea) traza:
java.lang.AssertionError:
at org.junit.Assert.fail(Assert.java:74)
at org.junit.Assert.assertTrue(Assert.java:37)
at org.junit.Assert.assertNotNull(Assert.java:356)
at org.junit.Assert.assertNotNull(Assert.java:365)
at un.paquete.UnaClaseTest.testLoQueSea(UnaClaseTest.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
...
... blah blah blah
Dentro del IDE tiene un pase, porque estamos a un click del problema. Lo feo es cuando esto pasa en integración continua y necesitamos abrir el código simplemente para saber cuál es el problema y poder decidir lo importante que es resolverlo.
Así que… chicos y chicas, assertNotNull("El karma no debe ser nulo", user.getKarma())
Hasta aquí mi consejo de hoy.