50 votes

Erreur "Forked Java VM exited abnormally" des tests junit

J'ai un test java junit qui passe lorsqu'il est exécuté seul sur une machine de développement. Nous avons également un job hudson qui exécute tous les tests, invoqués via ant, sur un nœud Mac OS X 10.4 avec Java 1.5. Le test passait dans le build hudson jusqu'à récemment mais maintenant (sans aucune modification du code) un test échoue à chaque fois avec l'erreur suivante :

Message d'erreur

Forked Java VM a quitté anormalement. Veuillez noter que le temps dans le rapport ne reflète pas le temps jusqu'à ce que la VM se termine.

Stacktrace

junit.framework.AssertionFailedError : Forked Java VM a quitté anormalement. Veuillez noter que l'heure dans le rapport ne reflète pas le temps jusqu'à ce que la VM se termine.

Une recherche sur Google montre que beaucoup d'autres personnes semblent avoir rencontré le même problème, mais là, je n'ai pas trouvé de réponse.

0 votes

Peut-être fournir la trace de la pile complète.

0 votes

Pascal : il n'y avait pas de stacktrace complet. Je n'ai toujours pas trouvé de réponse à cette question mais nous l'avons contournée en déplaçant le job hudson sur un autre Mac exécutant OS X 10.5 et Java 1.6. Le problème ne se manifeste pas sur cette configuration.

0 votes

Ce projet n'utilise pas JMock, avec le paramètre javaagent déclaré, n'est-ce pas ?

25voto

Prashanth Points 106

J'ai rencontré un problème similaire. J'ai exécuté les tests junit comme une tâche ant. J'ai ajouté le fichier showoutput="yes" ant junit property et a exécuté la tâche ant junit. Il a ensuite montré la trace de la pile d'exception qui a provoqué la sortie du jvm bifurqué.

7voto

Tristan Points 31

Pour moi, c'est un "java.lang.OutOfMemoryError" dans la VM forked (tâche junit avec fork="yes") qui a fait apparaître ce message dans la VM principale.

Le OutOfMemory était visible dans le journal des fourmis (enfin, est visible puisqu'il est toujours présent).

J'utilise ant 1.7.1, donc aucun espoir de mise à niveau de ant.

Après avoir mis les mêmes paramètres VM dans "Run>External tools>External tools>JRE" que dans Eclipse.ini (-Xms40m -Xmx512m -XX:MaxPermSize=256M) le problème est résolu.

Je continue à bifurquer vers "non" pour être sûr que les paramètres sont utilisés.

2 votes

Une autre façon de permettre au processus junit bifurqué d'accéder à plus de mémoire (détaillée ici : ant.apache.org/manual/Tasks/junit.html ) est d'utiliser l'attribut maxmemory sur la tâche junit ant.

0 votes

C'est le cas avec eclipse, que pouvons-nous faire lorsque nous travaillons avec ANT ?

5voto

Sharebear Points 71

Je crois avoir vu cette erreur une fois lorsque je me suis retrouvé avec plusieurs versions de junit dans mon classpath. Cela peut valoir le coup de vérifier.

4voto

Alex C Points 31

Cela peut se produire lorsqu'une RuntimeException non attrapée est levée. Malheureusement, la tâche junit ant n'affiche pas l'exception et il n'y a donc pas de moyen facile de déterminer la cause première. Vous pouvez contourner ce problème en exécutant le scénario de test à partir de la ligne de commande où l'exception sera affichée.

java <vm-args> org.junit.runner.JUnitCore <test-class-name>

Dans mon cas, une exception IllegalArgumentException a été lancée.

3voto

Brian Agnew Points 143181

La VM se bloque-t-elle ? Pouvez-vous trouver un fichier de vidage (appelé hs_err_pid*.log ) ? Si c'est le cas, le fichier de vidage vous donnera des indices sur la raison de ce plantage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X