Jak w IntelliJ debugować cel testu Mavena?


83

Korzystając z plików intellij i maven pom, w jaki sposób mogę debugować testy uruchamiane w ramach celu testu Maven?

Kiedy uruchamiam je bezpośrednio w kodzie, narzeka coś o brakujących profilach, co zaznaczyłem w Intellij's Maven Projects.

Odpowiedzi:


25

A co z prawym przyciskiem myszy na cel i „Debuguj [swój cel]” (w Twoim przypadku cel testowy)?

cel debugowania


Ach, o tym nie pomyślałem. Za późno w piątkowe popołudnie: D Dzięki.
— JavaRocky

27
Zakładając, że chcesz używać punktów przerwania, ta odpowiedź jest niewystarczająca. Zamiast tego zobacz odpowiedź Hover.
— David Groomes

186

http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

W IDEA uruchom test w trybie debugowania „ mvn -DforkMode=never test”

Zaktualizowano : otwórz konfigurację uruchamiania / debugowania, w zakładce „Runner” dodaj-DforkMode=never

wprowadź opis obrazu tutaj

(Notowane przez @ mikeapr4: nowsze wersje wtyczki surefire (2.14+) używają mvn -DforkCount=0 test)


To zadziałało dla mnie. Używam następującego polecenia do debugowania celu testowego w
— Pomyśle

1
W moim wielomodułowym projekcie była to jedyna opcja, która działała dla mnie z poziomu Intellij.
— nash

24
W przypadku IDEA 11 znalazłem w projektach Maven, musiałem kliknąć prawym przyciskiem myszy test modułu, który chciałem przetestować. Stworzyło to konfigurację uruchamiania / debugowania. Następnie edytuj tę nową konfigurację, kliknij kartę Runner i dodaj -DforkMode = never w opcjach maszyny wirtualnej. Kliknij OK. Ustaw punkt przerwania, a następnie kliknij ikonę debugowania, aby uruchomić nową konfigurację debugowania. Połączenie powyższych, więc dzięki za wskazówki.
— foolshat

@MarkM Breakpoints nie są respektowane w IJ13 przy użyciu tego podejścia.
— StephenBoesch

10
Warto zauważyć, że nowsze wersje używają pewnej wtyczki (2.14+) mvn -DforkCount=0 test, jest to wspomniane poniżej w innych (mylących) odpowiedziach, ale można je przeoczyć.
— mikeapr4

28

Wykonuję testy z następującymi opcjami:

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test

... a następnie połącz się z Maven za pomocą zdalnego debuggera.


Czy udało Ci się uruchomić log4j / logowanie? Dołączyłem nawet -Dlog4j.configuration = <ścieżka do log4j.properties>, ale instrukcje logowania nie są drukowane.
— StephenBoesch

18

-DforkMode=never już nie działa, jest teraz przestarzała w SureFire.

Użyj -DforkCount=0zamiast tego, gdy używasz pewnej wtyczki 2.14+.


1
Doktorzy Surefire mówią, aby zamiast tego używać forkCounti reuseForks, więc myślę, że powyższe miało powiedzieć „Użyj -DforkCount=0zamiast tego”. Próbowałem -DforkCount=0( reuseForksnie powinno mieć znaczenia, jeśli nie ma widelców), ale mój punkt przerwania nigdy się nie wyłączył. Działa z -DforkMode=never(Maven 3.2.1, IDEA 13.1.2).
— mmindenhall

10

Odpowiedź na pytanie. Ale żeby podzielić się własnym doświadczeniem. Wybrana odpowiedź nie rozwiązała mojego problemu. Mój kod ma wiele modułów.

Odpowiedź foolshata przyniosła cenny wgląd w mój problem.

Mam dwa rozwiązania, 1. Używając swojego IDEA, dodając opcję VM -DforkMode=never ; Należy go uruchomić w trybie debugowania. 2. Skonfiguruj zdalne debugowanie , określając gniazdo iw tym przypadku forkMode nie jest konieczny.

To tylko podsumowanie tego, przez co przeszedłem.


1

Rozwiązanie od Colina Heberta też mi nie odpowiada. Ale na szczęście znalazłem łatwy sposób na debugowanie testu, klikając prawym przyciskiem myszy zielony trójkąt, który pojawia się obok metody testowej:

Przykład klasy testowej Java

Mam nadzieję, że to ci pomoże!


1
Opublikuj kod tej klasy i nie używaj obrazu.
— zdrowy rozsądek

1
W tym komentarzu przedstawiam sposób debugowania przez otwarcie okna w IntelliJ. Kod klasy nie ma znaczenia.
— David DRM
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.