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.

JavaRocky
źródło

Odpowiedzi:

25

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

cel debugowania

Colin Hebert
źródło
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)

Hover Ruan
źródło
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.

Henryk Konsek
źródło
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+.

DesertBlade
źródło
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.

Robin Loxley
źródło
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!

David DRM
źródło
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