Maven зависает после запуска теста Spring JUnit

Возникла проблема с завершением сборки после модульных тестов с приложением maven против Spring. Я заметил, что установка mvn не завершается и что она зависла после запуска всех модульных тестов. Из строки cmd, если я бегу mvn install Я получаю тесты для завершения, но сборка зависает

Results :

Tests run: 34, Failures: 0, Errors: 0, Skipped: 0

14:20:15,588 [Thread-3] INFO  GenericApplicationContext  - Closing org.springframework.context.support.GenericApplicationContext@10a3b24: startup date [Wed Apr 25 14:20:08 EDT 2012]; root of context hierarchy
14:20:15,589 [Thread-3] INFO  DefaultListableBeanFactory  - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16c163f: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,sysModel,alarmList,resourcePool,sysParams,stationHelper,commandTracker,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy
14:20:15,595 [Thread-7] INFO  GenericApplicationContext  - Closing org.springframework.context.support.GenericApplicationContext@c5577c: startup date [Wed Apr 25 14:20:10 EDT 2012]; root of context hierarchy
14:20:15,596 [Thread-7] INFO  DefaultListableBeanFactory  - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@10952e8: defining beans [alarmDao,purgeDao,xactionDao,dataSource,sysModel,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy

Вот и конец. Два потока работают, не уверен, что я там сделал. Во всяком случае, для устранения неполадок я удалил весь тест и получил программу для сборки полностью. Если я бегу mvn install -DskipTestsЯ понимаю, чтобы завершить. Наконец, я добавил один тест JUnit, который по сути был system.out.println("привет мир");. Я мог получить установку, чтобы запустить тест и завершить установку, закомментировав аннотацию JUnit "@RunWith(SpringJUnit4ClassRunner.class)". Я использую Spring 3.1.0.RELEASE.

Эта проблема со сборкой связана с моей машиной для разработки под Windows7, но на нашей Linux-основе (Ubuntu 11.10). Сервер Hudson CI успешно запускает установку Maven в том же проекте для почасовых сборок, используя тот же репозиторий SVN.

2 ответа

Возможно, один из ваших бобов Spring порождает нить. Используйте jconsole, чтобы подключиться к застрявшему процессу и посмотреть, что там происходит. Вы можете исправить это, используя @PreDestroy на бине-нарушителе, чтобы отменить поток при завершении работы.

Похоже, что существует конфликт между потоками во время завершения работы приложения Spring. Вы можете попробовать включить ведение журнала для среды Spring на уровень отладки, чтобы увидеть, где находится конфликт, и устранить его, если можете.

Если это не является проблемой в контексте приложения, другой вариант - настроить плагин. surefire Плагин используется для выполнения тестов и имеет опции для запуска тестов в нескольких потоках. Начните с mvn -X чтобы увидеть, какие значения используются для параметров потока (параллельный, threadCount, perCoreThreadCount и т. д.). Настроить конфигурацию плагина surefire (идентификатор выполнения default-test) убедиться, что выполняется только один поток, и посмотреть, сможете ли вы получить install работая на вашей коробке Windows 7.

Как только он заработает в Windows: ваша текущая верная конфигурация (которая может быть по умолчанию предоставлена ​​Super POM) отлично работает в вашей среде CI. Поэтому я хотел бы создать профиль, активированный при работе в среде Windows 7, и перенести в него установленную конфигурацию подключаемого модуля surefire.

Другие вопросы по тегам