Недавно я начал работать в качестве фрилансера по моему текущему проекту. Одна из вещей, на которых я набросилась, была неудачная сборка Дженкинса (она провалилась с 8 апреля, за неделю до того, как я начал здесь).
Вообще говоря, вы можете увидеть проблему с ошибками DI в журнале. Первое, что я сделал, - это заставить все тесты работать одинаково, начиная с одного и того же контекста приложения. Они также реализовали свою собственную "насмешливую" вещь, которая, казалось, не работала правильно. После обсуждения с ведущим разработчиком я предложил начать использовать Springockito. (для определенного модуля им нужно было насмехаться за их интеграционное тестирование - устаревшие причины, которые нельзя изменить)
В любом случае, после этого материал начал плохо работать. Многие из beans, которые были издевались над тестом, просто не издевались или не были найдены или что-то еще. Как правило, это не сработало при загрузке контекста приложения, заявив, что тот или иной bean отсутствует.
Я пробовал разные вещи и разные подходы, но, в конце концов, только то, что я больше всего боялся, будет работать: добавьте @DirtiesContext для каждого теста. Теперь сборка maven начинает снова становиться зеленой, тесты начинают делать то, что они должны делать. Но я перезагружаю контекст Spring каждый раз, что занимает время - это все относительно, так как контекст загружается примерно через 1 - 2 секунды.
Обратите внимание на то, что они обновились до Hibernate 4 и, таким образом, до Spring 3.2. Раньше они использовали более старую версию Spring 3. Все тесты работали тогда, и проблема @DirtiesContext не требовалась.
Теперь, что меня больше всего волнует, я не могу сразу придумать объяснение этого странного поведения. Похоже, что контекст Спрингса загрязнен, просто путем запуска теста, который использует @Autowired beans. Не все тесты используют Mocks, так что это не может быть так. Звучит это знакомо кому-нибудь? Имел ли кто-либо опыт тестирования интеграции с (последняя версия) Spring?
В Stackoverflow я нашел этот билет: Как можно проверить "грязный" контекст приложения Spring? Это, похоже, в значительной степени подводит итог поведению, которое я вижу, но дело в том, что мы являемся аутсорсинговыми службами/репозиториями/... и что у нас нет каких-либо разработчиков по этим классам вообще.
Любые мысли?
Спасибо!