Uruchamianie pojedynczego testu JUnit w Eclipse

85

Jeśli mam zestaw testów z wieloma testami, kiedy próbuję uruchomić pojedynczy test jednostkowy, albo z menu kontekstowego edytora kodu, albo z widoku JUnit, wydaje się, że nalega na zawsze uruchamianie całego zestawu, a nie pojedynczy test. Czy istnieje sposób na wyłączenie, aby zmienić to zachowanie, abym mógł poprosić o uruchomienie tego i tylko tego testu.

user14128
źródło
11
Byłoby miło, gdybyś wybrał najlepszą odpowiedź, zaznaczając zielony znacznik obok odpowiedzi.
guerda

Odpowiedzi:

96

W eksploratorze pakietów rozwiń klasę. Powinien pokazać wszystkie metody. Kliknij prawym przyciskiem myszy jedną metodę, którą chcesz uruchomić, a następnie wybierz Uruchom jako -> JUnit z menu kontekstowego (właśnie przetestowano z Eclipse 3.4.1). Również wybranie „Uruchom” dla pojedynczego wpisu w widoku wyników JUnit w celu ponownego uruchomienia testu działa w ten sam sposób.

Volker Stolz
źródło
3
Niestety działa to tylko w przypadku metod testowych, które są bezpośrednio zaimplementowane w tej klasie. Nie działa dla dziedziczonych metod @Test.
Christopher Barber
1
Zwróć uwagę, że wydaje się, że musisz kliknąć nazwę metody. Kliknięcie wewnątrz metody spowoduje uruchomienie całej klasy. (A przynajmniej tak to się zachowuje dla mnie.)
emragins
Wydaje się, że działa tylko z tego konkretnego „eksploratora pakietów”, co jest więcej niż nieporęczne, jeśli chodzi o szybkie znalezienie metody, którą chcesz przetestować. A nawet wtedy debugger pomija inne metody - co pochłania dodatkowy czas. Musi być lepszy sposób ...
Macilias
i to też jest kruche ... teraz eclipse zdecydowało się nie pomijać innych testów podczas uruchamiania w ten sposób :(
Macilias
27

Najszybszy sposób jaki znam:

  1. Wciśnij Ctrl+ Shift+ (przenosi kursor do aktualnej deklaracji metody),
  2. naciśnij Alt+ Shift+ x(lub ddebugowanie), a następnie naciśnij t(klawisz skrótu do „Uruchom test JUnit” ),
  3. sprawdzić wynik testu,
  4. naciśnij Alt+, aby wrócić do poprzedniej linii kodu.

Jeśli chcesz przeprowadzić wszystkie testy, możesz pominąć kroki 1 i 4.

schnatterer
źródło
13

W Eclipse 3.5 możesz obejść ten problem, zmieniając program uruchamiający testy na JUnit 3. Będzie to działać tylko w przypadku testów JUnit 3, a nie JUnit 4. Możesz zmienić biegacza testowego, wykonując następujące czynności:

  1. Kliknij prawym przyciskiem myszy jedną z metod testowych w Eksploratorze konspektu
  2. Wybierz Uruchom jako -> Uruchom konfiguracje
  3. Na karcie „Test” wybierz opcję „Uruchom pojedynczy test”
  4. Z listy rozwijanej Test Runner wybierz „JUnit 3”

Może działać również w innych wersjach.

lucrussell
źródło
Dobra decyzja! Zmiana „Test Runner” na „JUnit 3” w oknie dialogowym konfiguracji uruchamiania działała dla mnie w Eclipse 3.6.0 (Helios). Teraz mogę uruchomić jedną metodę w teście JUnit. FWIW, nigdy nie miałem problemu z uruchamianiem poszczególnych klas testowych JUnit 3 lub 4 .
Adam Monsen
Idealnie to zadziałało również dla mnie. Powyższa odpowiedź nie, chociaż wydaje się, że ma więcej głosów pozytywnych.
dreza,
12

Jest to możliwe w Eclipse Indigo z JUnit 4.8.2. Kliknij prawym przyciskiem myszy metodę, którą chcesz przetestować jednostkowo indywidualnie w Outlineokienku, i wybierz Run As -> JUnit Test.

Możesz nawet wybiórczo kliknąć prawym przyciskiem myszy nazwę metody testowej w edytorze źródła i wybrać Run As -> Junit Test.

wulfgarpro
źródło
1
wydaje się, że przetestowałoby ten konkretny przypadek testowy. Jednak po tym nadal jest kontynuowany z innymi przypadkami testowymi.
lwpro2
@ lwpro2 Musisz używać JUnit 4 (adnotacje), aby przetestować pojedynczy przypadek testowy. JUnit 3 (rozszerzenie TestCase) nadal będzie uruchamiać wszystkie powiązane testy.
Anthony W,
1
wulfgar.pro Dałem znać @ lwpro2, że jeśli przeprowadzasz swój test JUnit z JUnit 4 runner (ponieważ na przykład używasz JUnit 4.8.2) JESZCZE twój test nadal wydłuża TestCase, nie będziesz w stanie uruchomić ani jednego przetestować samodzielnie. Musisz użyć runnera JUnit 3 lub przekonwertować swój test na użycie adnotacji.
Anthony W,
dzięki za komentarze. Jednak używałem Junit4 ze SpringJunit4ClassRunner. Zresztą nic wielkiego. skomentowanie adnotacji jest szybkie.
lwpro2
ta odpowiedź jest najprostsza
Jackson Tale
9

Nie używaj Strg+, F11ale klawisz skrótu Alt+ Shift+ X-> T.
Następnie Eclipse wykona aktualnie otwarty plik jako test JUnit. Zielony przycisk odtwarzania uruchomi tylko ostatnią wybraną konfigurację uruchamiania.

Dla mnie działa dobrze z Alt+ Shift+ X-> T.

guerda
źródło
Dzięki. Ale powiedzmy, że pracujesz nad klasą, która jest testowana przez test jednostkowy. Jak zmodyfikować klasę, jak uruchomić jej odpowiedni UnitTest bez przełączania okna do pliku UnitTest?
bibstha
@bibstha Możesz użyć Ctrl + 3, a następnie wpisać „rerun”. Umożliwia to ponowne uruchomienie ostatniego przypadku testowego JUnit. W opcji Okno-> Preferencje-> Ogólne-> Klawisze możesz przypisać własny skrót do tej akcji. Moim zdaniem odpowiednie byłoby Ctrl + Shift + F11.
guerda
9

Dodam do innych, dołączając wysoce produktywny sposób na klawiaturę, który umożliwia debugowanie pojedynczego testu jednostkowego (metody).

Przenieś kursor na nazwę metody, używając jednego z nich

  • Ctrl+ Shift+ Uplub
  • Ctrl+ Shift+ Downlub
  • Ctrl+ onastępnie wpisz nazwę metody

Gdy kursor znajdzie się na nazwie metody (lub tuż przed nią):

  • Alt+ Shift+ D-> T(Debuguj)
  • Alt+ Shift+ X-> T(bieg)

Po uruchomieniu testu możesz wrócić do miejsca, w którym znajdował się kursor, wykonując:

Alt+Back

Prawie uzyskasz zachowanie podobne do REPL przez:

Ctrl+ Shift+ Upi Alt+ Shift+ X-> Ti Alt+Back

Możesz też szybko ustawić punkt przerwania:

Ctrl+ Shift+B

Adam Gent
źródło
3

Kliknij prawym przyciskiem myszy nazwę metody testowej w pliku i wybierz „Uruchom” -> „Junit Test”. Robię to cały czas z Keplerem i JUnit 4.

Kyle Dyer
źródło
2

Miałem ten sam problem, który mieli inni, używając Eclipse 3.4.1 i JUnit 4 test runner - nie mogłem uruchomić pojedynczego testu. Ale gdzie indziej znalazłem sugestię, która rozwiązała problem. Moja klasa testowa nadal rozszerzała junit.framework.TestCase. Kiedy przestałem rozszerzać TestCase, wszystko działało dobrze i mogłem uruchomić pojedyncze testy JUnit za pomocą testera JUnit 4. Oczywiście musiałem, aby adnotacje JUnit 4 używały statycznego importu dla metod asercji, ale już to zrobiłem - po prostu nie usunąłem dziedziczenia TestCase.

ghirschhorn
źródło
1

Jeśli masz wiele testów w więcej niż jednym pliku i chcesz uruchomić tylko testy w określonym pliku, możesz kliknąć ten plik prawym przyciskiem myszy i wybrać Uruchom jako -> test junit. Teraz, jeśli chcesz uruchomić tylko jeden test, zawarty w pliku z wieloma testami, domyślam się (nie mam tutaj zainstalowanego eclipse), że widok Schemat wyświetli listę wszystkich metod testowych dla pliku i prawdopodobnie będziesz w stanie kliknij prawym przyciskiem myszy pojedynczą metodę testową i wykonaj ją jako test JUNit.

Mam nadzieję, że to pomoże.

Tomek
źródło
1

Aby uruchomić tylko jedną metodę testową.
W (eksploratorze pakietów lub eksploratorze projektów) rozwiń klasę. Powinien pokazać wszystkie metody. Kliknij prawym przyciskiem myszy jedną metodę, którą chcesz uruchomić, a następnie wybierz Uruchom jako -> JUnit z menu kontekstowego.
wprowadź opis obrazu tutaj

danilo
źródło
0

Jak dla mnie, nie działa również w Eclipse 3.4.2, chociaż działało w poprzednich wersjach (próbowałem uruchomić jedną metodę z eksploratora pakietów i test pojedynczej junit z widoku junit)


źródło
Uruchomienie jednej metody / testu z Eksploratora pakietów działa dobrze dla mnie w Eclipse 3.4.2.
Volker Stolz
0

Zgadzam się z punktem 3.4.2, który nie działa już tak, jak w poprzednich wersjach. Wcześniej można było kliknąć prawym przyciskiem myszy pojedynczy test w grupie testów w widoku JUnit i wykonać tylko ten test. W najnowszej wersji nalega, aby zawsze uruchamiać je wszystkie. To prawda, że ​​widok uruchamia test, który kliknąłeś jako pierwszy, a resztę zrzuca do pakietu zbiorczego o nazwie „Unrooted Tests”. Jeśli ktoś to wymyśli, chciałbym wiedzieć, jak to obejść.

ra9r
źródło
0

Czytając niektóre z tych komentarzy, wydaje się, że możesz być zainteresowany przeprowadzeniem testów kodu, który zmieniasz podczas jego zmiany, bez utraty koncentracji na kodzie, nad którym pracujesz. Do tego celu służy wtyczka Eclipse. Zobacz infinitest .

unigeek
źródło