Abel Muiño

home

La importancia de los mensajes en los tests

30 Aug 2010

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.

Love message

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.