webentwicklung-frage-antwort-db.com.de

Debuggen von JUnit-Tests ähnlich wie bei einem normalen Java-Programm in Eclipse

Wenn ich in Eclipse ein Java-Programm im Debug-Modus ohne Haltepunkte ausführe und die JVM eine NullPointerException trifft, wird Eclipse die betreffende Codezeile hervorheben und die lokalen Variablen anzeigen. Die Ausführung wird angehalten. Ich kann Code über die Registerkarte Anzeige auswerten und so weiter.

Wenn ich jedoch einen JUnit-Test im Debug-Modus durchführe und der Jvm eine NullPointerException trifft, wird der Jvm nicht angehalten und ich habe keine Möglichkeit, die lokalen Variablen anzuzeigen. 

Ist es möglich, JUnit-Tests auszuführen, damit die JVM automatisch anhält, wenn ich eine NullPointerException störe, ohne Haltepunkte zu verwenden?

Bearbeiten: Verwenden von JUnit 4 und Juno

18
Eddified

Eclipse stoppt, wenn die geworfene Ausnahme nicht erfasst wird und Sie dann aus main () aussteigen würden. Wenn Sie jedoch mit dem JUnit-Framework arbeiten, werden alle Ausnahmen von JUnit abgefangen, sodass Eclipse nicht angehalten wird.

Zwei Lösungen kommen in den Sinn:

  • setzen Sie den Ausnahme-Brekpoint auf Stopp, wenn NPE ausgelöst wird
  • verwenden Sie die von JUnit gemeldete Stack-Trace der Ausnahme und legen Sie den Haltepunkt in der Zeile fest, in der die Ausnahme ausgelöst wird.
2
Arkadiy
  1. Doppelklicken Sie auf Haltepunkt setzen

  2. Verwenden Sie den Debug-Modus, um in Eclipse auszuführen

Bewegen Sie die Maus über diese Codezeile und klicken Sie auf step over oder f6.

2
Donald Wu
  1. Öffnen Sie den Junit-Testfall oder die Junit-Test-Suite, die Sie ausführen möchten.
  2. Platzieren Sie Ihren Haltepunkt.
  3. Klicken Sie mit der rechten Maustaste auf die Datei und klicken Sie auf Debuggen als> Junit-Test.
1
Dhruv Naik

Sie können es auf der Registerkarte "JUnit" sehen. Wenn Sie auf die fehlerhafte Zeile doppelklicken, wechseln Sie zu der Stelle, an der die Nullzeigerausnahme aufgetreten ist.

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

Nachdem Sie dies getan haben, werden Sie in die Fehlerzeile weitergeleitet.

0
Marco Blos