unitarias unitaria una tutorial test será qué que pruebas prueba método indica hacer ejemplos configuracion como anotación java eclipse junit out-of-memory

java - unitaria - ¿Por qué se agota el espacio del montón solo cuando se ejecutan pruebas JUnit?



testing en java (5)

Al ejecutar las pruebas de JUnit, siempre parece que me encuentro con este error:

eclipse outOfMemoryError: espacio de montón

Supervisé Eclipse con JConsole y los picos de la memoria dinámica en aproximadamente 150 MB. He configurado la memoria del montón en 1GB.

Estoy usando los siguientes argumentos al iniciar Eclipse:

-vm "C:/Program Files/Java/jre1.5.0_08/bin/javaw.exe" -vmargs -Xmx1024M -XX:MaxPermSize=128M -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

¿Alguien sabe lo que puede estar causando este problema? Sucede solo cuando se ejecutan pruebas JUnit.


Las pruebas de Junit se ejecutan en una vm diferente como Eclipse IDE. Entonces es que vm está fuera de la memoria y no del Eclipse.
Puede cambiar la configuración de la prueba vm en las configuraciones de ejecución de la prueba.
Vaya a las configuraciones de ejecución y luego debajo de los argumentos, puede establecer los argumentos vm.


Acabo de lanzar un complemento para Eclipse que establecerá automáticamente el tamaño del montón en los lanzadores JUnit por usted. Puede obtenerlo desde http://code.google.com/p/junitlaunchfixer/ Funciona con Eclipse Europa, Ganymede y Galileo.


Encontré la solución a mi problema, puede ayudar a otros;) Cuando aumentaba el tamaño del montón, aumentaba el tamaño del montón de la aplicación de eclipse, no de mi programa (que ejecuté a través de eclipse). Lo que tenía que hacer era modificar el comandos de ejecución antes de ejecutar mi programa.


Además de la respuesta de @Thijs Wouters, para solucionar este problema en eclipse hice lo siguiente:

  • Se agregó una nueva configuración de ejecución en JUnit (Ejecutar> Configuración de ejecución> JUnit> Nuevo)
  • Dentro de la pestaña de argumentos, establezca los argumentos de VM en "-Xms64m -Xmx256m" o superior si es necesario

Probablemente tenga una pérdida de memoria en sus pruebas JUnit. Un problema común es este: Junit creará una nueva instancia de una clase TestCase para cada método de prueba y todas las variables de instancia se mantendrán hasta que JUnit termine. Eso significa que si tiene una clase TestCase con 50 métodos de prueba y una variable de instancia que se inicializa con un gráfico de objetos de 1MB en su método setUp (), esa clase TestCase requerirá 50MB de espacio de almacenamiento dinámico.

Editar: el problema descrito anteriormente solo existe en versiones anteriores de JUnit, creo que se corrigió en JUnit 4.