Как в IntelliJ отладить цель теста maven?

83

Используя файлы pom intellij и maven, как отладить тесты, выполняемые в рамках цели тестирования maven?

Когда я запускаю их прямо в коде, он жалуется на отсутствие профилей, что я отмечал в Intellij's Maven Projects.

JavaRocky
источник

Ответы:

25

Как насчет щелчка правой кнопкой мыши по вашей цели и «Отладка [ваша цель]» (в вашем случае цель тестирования)?

debug goal

Колин Хеберт
источник
Ах, не подумал об этом. Слишком поздно в пятницу днем: D Спасибо.
JavaRocky
27
Предполагая, что вы хотите использовать точки останова, этого ответа недостаточно. Вместо этого см. Ответ Ховера.
Дэвид Грумс
186

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

В IDEA запустите тест в режиме отладки "mvn -DforkMode=never test "

Обновлено : откройте конфигурацию запуска / отладки, на вкладке «Runner» добавьте-DforkMode=never

enter image description here

(Отмечено @ mikeapr4: используются более новые версии плагина surefire (2.14+) mvn -DforkCount=0 test)

Hover Ruan
источник
Это сработало для меня. Я использую следующую команду для отладки цели теста в Idea 10.
Swapnonil Mukherjee
1
В моем многомодульном проекте это был единственный вариант, который работал у меня из Intellij.
nash
24
В IDEA 11, которую я обнаружил в проектах Maven, мне нужно было щелкнуть правой кнопкой мыши тест для модуля, который я хотел протестировать. Это создало конфигурацию запуска / отладки. Затем отредактируйте эту новую конфигурацию, щелкните вкладку runner и добавьте -DforkMode = never в параметрах виртуальной машины. Щелкните ОК. Установите точку останова, затем щелкните значок отладки, чтобы запустить новую конфигурацию отладки. Комбинация вышеперечисленного, так что спасибо за советы.
foolshat
Точки останова @MarkM не соблюдаются в IJ13 для меня, использующего этот подход.
StephenBoesch
10
Стоит отметить использование более новых версий плагина surefire (2.14+) mvn -DforkCount=0 test, это упоминается ниже в других (сбивающих с толку) ответах, но они могут быть пропущены.
mikeapr4 03
28

Я провожу тесты со следующими параметрами:

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

... а затем подключитесь к Maven с помощью удаленного отладчика.

Хенрик Консек
источник
Удалось ли вам заставить работать log4j / logging? Я даже включил -Dlog4j.configuration = <путь к log4j.properties>, но операторы регистрации не печатаются.
StephenBoesch
18

-DforkMode=never больше не работает, теперь он устарел в SureFire.

Используйте -DforkCount=0вместо этого при использовании плагина surefire 2.14+.

DesertBlade
источник
1
В документации Surefire говорится, что нужно использовать forkCountи reuseForks, поэтому я думаю, что вышесказанное должно было сказать: «Используйте -DforkCount=0вместо». Я пробовал -DforkCount=0( reuseForksне имеет значения, нет ли вилок), но моя точка останова не сработала. Он работает с -DforkMode=never(Maven 3.2.1, IDEA 13.1.2).
mmindenhall
10

На вопрос дан ответ. Но просто чтобы поделиться своим опытом. Выбранный ответ не решил мою проблему. В моем коде несколько модулей.

Ответ foolshat действительно помог мне разобраться в моей проблеме.

У меня есть два решения: 1. Используя вашу IDEA, добавив опцию VM -DforkMode=never ; Необходимо запустить его в режиме отладки. 2. Настройте удаленную отладку , указав сокет, и в этом случае forkMode не нужен.

Это просто краткое изложение того, через что я прошел.

Робин Локсли
источник
1

Решение от Колина Хеберта мне тоже не подходит. Но, к счастью, я нашел простой способ отладить тест, щелкнув правой кнопкой мыши зеленый треугольник рядом с методом тестирования:

Пример тестового класса Java

Надеюсь, это вам поможет!

Дэвид DRM
источник
1
Пожалуйста, опубликуйте код этого класса и не используйте изображения.
здравый смысл
1
В этом комментарии я рассказываю о способе отладки путем открытия окон в IntelliJ. Код класса не важен.
Дэвид DRM