Отладчик не останавливается в точках останова (Arquillian, TomEE, OpenJPA Enhancer, Maven, JUnit и IntelliJ)

Я пишу веб-приложение, которое использует JAX-RS (Apache CXF) и JPA (Apache OpenJPA) и развертывается с помощью TomEE+. Я начал использовать Arquillian через зависимость maven, встроенную в arquillian-tomee, для модульного тестирования моих служб REST.

Когда я использую IntelliJ для запуска тестовой фазы жизненного цикла сборки Maven, все работает отлично. Он запускает усилитель OpenJPA на моих объектах JPA, запускает модульные тесты, и я могу успешно вызывать свои веб-службы, и они могут успешно обращаться к базе данных.

К сожалению, если я запускаю фазу тестирования в режиме отладки, все по-прежнему работает, но ни одна из моих точек останова не срабатывает. Что я должен сделать, чтобы исправить эту проблему?

Я нашел утомительный обходной путь. Я могу щелкнуть правой кнопкой мыши каждый модульный тест и запустить его в режиме отладки, и отладчик попадет в точки останова... но я должен заранее вручную запустить усилитель OpenJPA, чтобы код JPA работал.


person Ed LaFave    schedule 04.03.2016    source источник
comment
что подразумевается под запуском тестовой фазы в режиме отладки? что такое командная строка maven? если вы имеете в виду -X, то это означает, что Maven работает в режиме отладки, а не отлаживает ваше приложение.   -  person OhadR    schedule 04.03.2016
comment
Я не использую Maven через командную строку. Я использую Maven через IntelliJ IDEA. Я щелкаю правой кнопкой мыши фазу тестирования жизненного цикла maven и выбираю пункт меню «Отладка».   -  person Ed LaFave    schedule 04.03.2016


Ответы (3)


Когда вы «запускаете этап тестирования в режиме отладки», это означает, что Maven работает в режиме отладки, а не отлаживает ваше приложение. Вы не можете отлаживать свое приложение через maven. Maven запускает тесты с помощью плагина surefire, и вы не можете использовать точки останова и отладку.

person OhadR    schedule 04.03.2016
comment
Спасибо за ответ, я только начал использовать IntelliJ и Maven. Чтобы решить мою проблему, я использовал IntelliJ для создания конфигурации запуска/отладки JUnit и добавил цель openjpa:enhance в список перед запуском. Теперь я могу запускать свои тесты без утомительного ручного процесса, который я описал ранее. Спасибо! - person Ed LaFave; 04.03.2016
comment
@EdLaFave, чувак, ты только что спас мой рассудок! Я использую Idea 14 CE, я мог видеть, что запуск «теста» Maven в отладке был подключен к виртуальной машине/сокету, но НЕТ действия точки останова!!! Я создал конфигурацию JUnit, как вы рекомендуете, предварительно выполнив «компиляцию» Maven, которая сработала, спасибо! - person Big Rich; 06.07.2016

Возможны две возможности: 1) Код/точки останова недоступны/не вызываются в текущем контексте. 2) Вы НЕ запускаете приложение в режиме отладки.

Убедитесь, что вы выполняете отладку приложения, а не запускаете его как «Запуск от имени…».

Учитывая, что вы используете Eclipse, запустите -> Отладка как -> ‹-Ваше целевое приложение->

Также убедитесь, что везде, где вы добавили точки останова, эти строки доступны.

person Aniruddha Kalburgi    schedule 04.03.2016
comment
У меня есть точка останова в первой строке модульного теста, и она срабатывает, когда я использую описанный мной обходной путь, поэтому я не беспокоюсь о доступности. Я также уверен, что когда я запускаю фазу тестирования Maven, это делается в режиме отладки. Я запускаю его с помощью значка отладки в правом верхнем углу IntelliJ, и он запускает окно отладки. - person Ed LaFave; 04.03.2016
comment
В порядке. И что это за линия. - person Aniruddha Kalburgi; 05.03.2016
comment
Эй, тогда, пожалуйста, добавьте оператор журнала / печати и добавьте к нему точку останова, тогда вы узнаете, выполняется ли ваш тестовый пример или нет. - person Aniruddha Kalburgi; 02.04.2016

Раньше я сталкивался с проблемами, связанными с отладкой IntelliJ, которые не сталкивались с точками останова. Возможно, вам повезет отключить плагин JUnit и перезапустить IDEA.

person Gabe    schedule 13.07.2016