14 Stimmen

Debuggen von Mockito/JUnit-Code in Eclipse nicht möglich, funktioniert nur mit JUnit

Ich habe JUnit-Tests, die einfach gut laufen. Ich habe Mockito zu meinem Build hinzugefügt und versuche, einen Haltepunkt in meinen JUnit-Test zu setzen, der Mockito verwendet, um einige der öffentlichen Methoden zu spiegeln. Wenn ich versuche, den Debugger für die Klasse auszuführen, erhalte ich die Fehlermeldung "Aufgrund fehlender Zeilennummernattribute kann kein Haltepunkt in XXX installiert werden. Ändern Sie die Compiler-Optionen, um Zeilennummernattribute zu generieren." Ich habe meinen Compiler überprüft und Zeilennummern generieren ist ausgewählt.

0 Stimmen

Welche Version von Mockito verwenden Sie?

0 Stimmen

Ich musste eine org.mockito.plugins.MockMaker für das Mocking der finalen Klasse, was es mir nicht ermöglicht, den Quellcode zu debuggen.

8voto

cleberz Punkte 590

Die Ausnahme, die Sie sehen, wird durch den Versuch verursacht, dynamisch generierte leere Mock-Methoden zu debuggen, die von der mock() Funktion. Aus Ihrer Frage geht hervor, dass Sie eigentlich partielle Mocks anstelle von vollständigen Mocks verwenden möchten, bei denen nur einige Methoden gespottet werden und die restlichen Aufrufe an die tatsächliche Implementierung delegiert werden.

Um partielle Mocks zu erstellen, sollten Sie die spionieren() Methode statt der Methode mock() Methode. Also, verwenden Sie

MyClass myMock = spy(new MyClass());

anstelle von

 MyClass myMock = mock(MyClass.class);

4voto

Versuchen Sie, Ihre Haltepunkte zu entfernen und neu hinzuzufügen. Es könnte sein, dass ein aktueller Haltepunkt auf eine alte Version einer Klasse verweist. Genau das!

Vielleicht dieser Beitrag in der Mockito-Gruppe kann Ihnen helfen.

1voto

wouter Punkte 11

Ich habe die gleichen Meldungen (Eclipse Luna).

Trotz der vielen Fehlermeldungen funktioniert das Debugging noch, wenn der Debugger auf Ihren Haltepunkt trifft. Sie müssen nur bei allen Meldungen auf "ok" klicken oder diese Meldungen deaktivieren.

Ich denke, das Problem entsteht dadurch, dass Haltepunkte auf eine erweiterte Klasse gesetzt werden (mockito erweitert wahrscheinlich dynamisch die gespotteten Klassen) und Eclipse nicht in der Lage ist, den Quellcode zurückzuverfolgen.

0voto

Mike Baranczak Punkte 8043

Wenn es nur passiert, wenn Sie Mockito verwenden, dann ist es vielleicht, weil Mockito ohne Debugger-Unterstützung kompiliert wurde?

Vergewissern Sie sich auch, dass Sie für Ihre Testklassen dieselben Compiler-Einstellungen haben wie für Ihren regulären Code.

0voto

Tritt auf, wenn Sie einen Haltepunkt in einer gespiegelten Methode setzen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X