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.