web-dev-qa-db-fra.com

Comment déboguer des tests JUnit similaires à un programme Java classique dans Eclipse

Dans Eclipse, si j'exécute un programme Java en mode débogage sans points d'arrêt et si la machine virtuelle Java rencontre une exception NullPointerException, Eclipse mettra en surbrillance la ligne de code incriminée et affichera les variables locales, etc. L'exécution est suspendue. Je peux évaluer le code en utilisant l'onglet Affichage, etc.

Mais, si j'exécute un test JUnit en mode débogage et que le jvm rencontre une exception NullPointerException, le jvm ne se met pas en pause et je n'ai pas l'occasion de voir les variables locales. 

Est-il possible d'exécuter des tests JUnit afin que la machine virtuelle Java se mette automatiquement en pause lorsque je frappe une exception NullPointerException, sans utiliser de points d'arrêt?

Edit: Utilisation de JUnit 4 et Juno

18
Eddified

Eclipse s'arrête lorsque l'exception qui est lancée est non capturée et vous écarterait de main (). Cependant, lorsque vous utilisez le framework JUnit, toutes les exceptions sont capturées par JUnit. Eclipse ne s'arrête donc pas.

Deux solutions me viennent à l’esprit:

  • définir le point d'exception brekpoint pour qu'il s'arrête lorsque NPE est lancé
  • utilisez la trace de pile de l'exception signalée par JUnit et définissez le point d'arrêt sur la ligne qui lève l'exception (c'est celle que je préfère).
2
Arkadiy
  1. Double-cliquez sur définir un point d'arrêt

  2. Utiliser le mode Debug pour s'exécuter dans Eclipse

Placez le curseur sur cette ligne de code, puis cliquez sur step over ou f6

2
Donald Wu

Vous pouvez le voir sur l'onglet JUnit. Si vous double-cliquez sur la ligne présentant un problème, vous accédez à l'emplacement où l'exception null-pointeur s'est produite.

Java.lang.NullPointerException        <--First line of the error
at.com.myProject.MyClass.myMethod(MyClass.Java:theLineOfMyCode) <-- the line that you should double-click

Après cela, vous serez redirigé vers la ligne de l'erreur.

0
Marco Blos