У IntelliJ, як мені налагодити ціль тесту maven?


83

Використовуючи файли intellij та maven pom, як мені налагоджувати тести, що виконуються всередині цілі тесту maven?

Коли я запускаю їх безпосередньо в коді, він скаржиться на те, що відсутні профілі, які я позначив у Intellij's Maven Projects.

Відповіді:


25

А як щодо правої кнопки миші на вашій цілі та "Налагодження [вашої цілі]" (у вашому випадку тестової мети)?

мета налагодження


Ааа, не думав про це. Занадто пізно в п’ятницю вдень: D Дякую.
JavaRocky

27
Якщо припустити, що ви хочете використовувати точки зупинку, цієї відповіді недостатньо. Натомість див. Відповідь Hover.
David Groomes,

186

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

В IDEA запустіть тест у режимі налагодження " mvn -DforkMode=never test"

Оновлено : Відкрийте конфігурацію запуску / налагодження, на вкладці "Бігун" додайте-DforkMode=never

введіть тут опис зображення

(Відзначено @ mikeapr4: використання новіших версій плагіна surefire (2.14+) mvn -DforkCount=0 test)


Це спрацювало для мене. Я використовую таку команду для налагодження цілі тесту в Ідеї 10.
Swapnonil Mukherjee

1
У моєму мультимодульному проекті це був єдиний варіант, який працював у мене з Intellij.
наш

24
В IDEA 11, який я знайшов у проектах Maven, мені довелося клацнути правою кнопкою миші на тесті для модуля, який я хотів протестувати. Це створило конфігурацію запуску / налагодження. Потім відредагуйте цю нову конфігурацію, клацніть на вкладці бігуна та додайте -DforkMode = ніколи у Параметри віртуальної машини. Клацніть добре. Встановіть точку зупинки, а потім натисніть піктограму налагодження, щоб запустити нову конфігурацію налагодження. Поєднання вищезазначеного, тож дякую за поради.
дурень

Точки зупинки @MarkM не застосовуються в IJ13 для мене, що використовую цей підхід.
StephenBoesch

10
Варто відзначити новіші версії плагіна surefire (2.14+) mvn -DforkCount=0 test, про це згадується нижче в інших (заплутаних) відповідях, але їх можна пропустити.
mikeapr4

29

Я виконую тести з наступними опціями:

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

19

-DforkMode=never більше не працює, зараз вона застаріла в SureFire.

Використовуйте -DforkCount=0замість цього при використанні безпомилкового плагіна 2.14+.


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

Сподіваюся, це допоможе вам!


1
Будь ласка, опублікуйте код цього класу і не використовуйте зображення.
здоровий глузд

1
Те, що я вношу в цей коментар, - це спосіб налагодження, відкривши вікна на IntelliJ. Код класу неважливий.
Девід DRM,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.