2010-07-01 10 views
9

Ich habe JUnit Tests, die gut funktionieren. Mockito wurde zu meinem Build hinzugefügt und ich versuche, einen Breakpoint in meinen JUnit-Test zu setzen, der Mockito verwendet, um einige der öffentlichen Methoden auszuprobieren. Wenn ich versuche, den Debugger für die Klasse auszuführen, erhalte ich den Fehler "Kann den Haltepunkt in XXX aufgrund fehlender Zeilennummernattribute nicht installieren. Ändern Sie die Compileroptionen, um Zeilennummernattribute zu generieren." Ich habe meinen Compiler überprüft und ich generiere Zeilennummern ausgewählt.Kann Mockito/JUnit-Code in Eclipse nicht debuggen, funktioniert gut mit nur JUnit

+0

, welche Version von Mockito verwenden Sie? – iwein

Antwort

0

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

Überprüfen Sie außerdem, ob Sie die gleichen Compilereinstellungen für Ihre Testklassen wie für Ihren normalen Code haben.

+0

Ich denke @ Albert-t-Wong sagte, dass der dynamische (generierte) Scheincode keine Debug-Informationen hatte, nein, dass er Mockitos Quellcode nicht debuggen konnte. – cleberz

2

Versuchen Sie, indem Sie Ihre Haltepunkte entfernen und erneut hinzufügen. Möglicherweise verweist ein aktueller Haltepunkt nur auf eine alte Version einer Klasse. Nur das!

Vielleicht this post in the Mockito group kann Ihnen helfen.

1

Ich habe die gleichen Nachrichten (Eclipse Luna).

Trotz der großen Anzahl von Fehlermeldungen funktioniert das Debuggen immer noch, wenn der Debugger Ihren Haltepunkt erreicht. Sie müssen nur auf "OK" klicken oder diese Nachrichten deaktivieren.

Ich denke, das Problem entsteht durch das Setzen von Breakpoints auf eine erweiterte Klasse (Mockito erweitert wahrscheinlich die mokierten Klassen dynamisch) und Eclipse kann den Quellcode nicht aufspüren.

0

neben dieser Frage war alt ich hatte das gleiche Problem heute und die Lösung war recht einfach, aber dauerte einige Zeit, um es herauszufinden. Also das kann hilfreich sein, wer hier stolpert.

Ich hatte gerade einen alten Breakpoint gesetzt und einer von ihnen zeigte auf einen veränderten Code, so dass die aufgezeichnete Haltepunktposition nicht mehr gut war.

Mein Rat ist zu versuchen, alle störenden Haltepunkte zu entfernen und sie auf dem aktuellen Code neu zu installieren. Nach einem sauberen Build, nur um sicher zu sein, auf die neueste Binärdatei zu zeigen. :)

1

Die Ausnahme, die Sie sehen, wird durch den Versuch verursacht, dynamisch generierte leere Mock-Methoden zu debuggen, die von der Funktion mock() erstellt wurden. Aus Ihrer Frage sieht es so aus, als wollten Sie tatsächlich partielle Mocks statt voller Mocks verwenden, wobei nur einige Methoden verspottet werden und die verbleibenden Aufrufe an die reale Implementierung delegiert werden.

Teil Mocks zu erstellen, sollten Sie die Spion() Methode anstelle der Mock() Methode werden. So verwenden

MyClass myMock = spy(new MyClass()); 

statt

MyClass myMock = mock(MyClass.class); 
Verwandte Themen