2010-07-01 17 views
9

Mam testy JUnit, które działają poprawnie. Dodano Mockito do mojej kompilacji i próbuję umieścić punkt przerwania w moim teście JUnit, który używa Mockito do wyszydzania niektórych publicznych metod. Kiedy próbuję uruchomić debugger na klasie, pojawia się błąd "nie można zainstalować punktu przerwania w XXX z powodu braku atrybutów numeru linii. Zmodyfikuj opcje kompilatora, aby wygenerować atrybuty numeru linii." Sprawdziłem mój kompilator i wybrałem numery linii.Nie można debugować kodu Mockito/JUnit w środowisku Eclipse, działa dobrze tylko z JUnit

+0

jaka wersja Mockito używasz? – iwein

Odpowiedz

0

Jeśli dzieje się to tylko przy użyciu Mockito, to może dlatego, że Mockito zostało skompilowane bez obsługi debuggera?

Sprawdź również, czy masz takie same ustawienia kompilatora dla klas testowych, jak dla zwykłego kodu.

+0

Myślę, że @ albert-t-wong mówił, że dynamiczny (wygenerowany) kod sztuczny nie ma informacji debugowania, nie, że nie mógł debugować kodu źródłowego Mockito. – cleberz

2

Spróbuj przez usunięcie i ponowne dodanie punktów przerwania, może się okazać, że bieżący punkt przerwania odwołuje się do starej wersji klasy. Tylko to!

Może this post in the Mockito group może ci pomóc.

1

Mam te same wiadomości (Eclipse Luna).

Pomimo dużej liczby komunikatów o błędach debugowanie nadal działa, jeśli debuger trafi w punkt przerwania. Trzeba po prostu kliknąć "OK" na wszystkich z nich lub wyłączyć te wiadomości.

Myślę, że problem pochodzi z umieszczania punktów przerwania na rozszerzonej klasie (mockito prawdopodobnie dynamicznie rozszerza wyśmiewane klasy), a Eclipse nie jest w stanie wyśledzić kodu źródłowego.

0

oprócz tego pytania jest stary miałem ten sam problem dzisiaj i rozwiązanie było dość proste, ale zajęło trochę czasu, aby to rozgryźć. Może to być pomocne dla tego, kto się tu potknie.

Po prostu miałem ustawiony stary punkt przerwania i jeden z nich wskazywał na zmieniony kod, tak że zarejestrowana pozycja punktu przerwania nie była już dobra.

Moja rada to próba usunięcia wszystkich niebezpiecznych punktów przerwania i zainstalowania ich na bieżącym kodzie. Po czystej kompilacji, po prostu upewnij się, że wskazuje na najnowszą wersję binarną. :)

1

Wyjątek, który widzisz, jest spowodowany próbą debugowania dynamicznie generowanych pustych próbnych metod utworzonych przez funkcję mock() (). Z twojego pytania wynika, że ​​chcesz używać częściowych mumin zamiast pełnych mocków, gdzie tylko niektóre metody są wyśmiewane, a pozostałe połączenia są delegowane do rzeczywistej implementacji.

Aby utworzyć częściowe mocks, należy używać z szpieg() metody zamiast metody mock(). więc używać

MyClass myMock = spy(new MyClass()); 

zamiast

MyClass myMock = mock(MyClass.class); 
Powiązane problemy