Цикл по профилям Spring
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 30.10.18 23:45
Оценка:
Понадобилось необычное.

Есть сервис, писанный на Spring. В нем есть имплементации некоторого функционала, заточенные под разные облака. Сделано через "профили".
Далее. Я пишу некоторый набор юнит-тестов, общий для всех облаков. И я хочу чтоб тест запускался N раз, где N — количество поддерживаемых облачных профилей. На данный момент только Azure и AWS, но скоро добавится Google и прочие.

Фактически, мне бы нужно переинициализировать Spring ApplicationContext для каждой такой итерации — загрузили профиль Azure, прогнали все тесты, перешли к следующему профилю. На данный момент я пишу в заголовке класса с тестом:

@ActiveProfiles({ "Azure" })


И если делать так же, то мне придется тупо копировать одни и те же тесты, меняя используемый профиль. Чего не хотелось бы. Пока на ум приходит колдовство с Maven'ом, но в этом случае такие тесты нельзя будет запустить из IDEA, перебор профилей получится только из Maven.

Кто-нибудь делал похожее? Где б почитать/посмотреть примеры?
С уважением, Artem Korneev.
Re: Цикл по профилям Spring
От: bzig  
Дата: 31.10.18 01:47
Оценка: 2 (1)
Спрнгом цикл не получится, потому что сам Спринг знает только про активные профили.

> @ActiveProfiles({ "Azure" })


Можно убрать привязку тестов к профилю и стартовать что-ты-там-стартуешь несколько раз, передавая профиль в командной строке.

Можно написать шелл скрипт, который поищет доступные профили в директории и запустит в цикле, хотя скорее всего выяснится, что не совсеми профилями надо. Лучше шелл скрипту в явном виде список профилей дать и пусть он цикл гоняет.

AK>И если делать так же, то мне придется тупо копировать одни и те же тесты, меняя используемый профиль. Чего не хотелось бы. Пока на ум приходит колдовство с Maven'ом, но в этом случае такие тесты нельзя будет запустить из IDEA, перебор профилей получится только из Maven.


Для ИДЕИ можно сохранить конфигурации с прописанными профилями и пускать их по одной вручную. Или в качестве извращения организовать из них цепочку — в ИДЕЕ можно для каждой запускаемой конфигурации прописать какую конфигурацию запустить перед этой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.