Resultado de etiquetas “junit”

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.

Estoy de reenganche con mis proyectos tras venirme de vacaciones (la primera vez que descanso un mes entero, se hace duro). Además, me he actualizado la versión de OSX a Snow Leopard ...

Oh, sorpresa, las pruebas de uno de los proyectos fallan con un místico Invalid memory access for location.

Mi conclusión, después de buscar mucho en google, es que se trata de algún tipo de bug en la gestión de memoria que ocurre al combinar la nueva versión de Java en Snow Leopard con las clases compiladas por el compilador de JDT (yo uso Eclipse 3.5 todavía... quizá con el nuevo Eclipse 3.6 esto no pase...).

Yo lo he solucionado haciendo que -Xms y -Xmx coincidan y poniendo suficiente PermGenSpace (aunque eso es otra guerra), tanto para Eclipse como para el lanzador de Junit.

Lo "bueno" de todo esto es que desde línea de comandos todo funciona (ya que no se usa el compilador de JDT).

Otras solución que he leído (pero no probado) es ejecutar java en modo interpretado (bastante más lento).

1

Sobre mi

No hay sorpresas, mi nombre es Abel Muiño. Soy un apasionado del desarrollo de software desde que cayó en mis manos un ZX Spectrum 48K... si no recuerdo mal, tendría unos 7 años. Han pasado bastantes años, varias empresas y...

Comentarios recientes

  • @Manuel: tienes toda la razón sobre el "efecto contagio". Durante estas vacaciones hablaba del tem...

  • Germán: creo que tengo el mismo joystick de la foto en algún cajón en casa de mi padre ;-) Sobre tu...

  • Hola Abel: Está claro que Dios los cría y ellos se juntan. De ahí que siga tu blog, porque comparto...

    Manuel Jesús Recena Soto
    My most authentic self
  • Uff da miedo conocer tanta gente parecida, hace poco publiqué esta foto: http://twitpic.com/2c90t7...

  • No hombre! Gracias a ti que le subes el nivel a este pobre blog! Estoy de acuerdo en que no siempre...

Cerrar