Исходя из моего личного опыта, мы столкнулись с той же дилеммой.В итоге мы использовали оба типа тестов: - модульные тесты, управляемые плагином surefire - интеграционные тесты, управляемые плагином failsafe.Оба работали во время сборки (но на разных этапах)
Теперь, что касается тестов контроллера:
Я считаю, что юнит-тесты должны быть быстрыми, десятки или сотни из них должны выполняться в пределахПримерно за 1 секунду они также не должны иметь внешних зависимостей и запускать все в памяти (без сокетов, сетевых подключений, баз данных и т. Д.). Эти тесты должны выполняться программистом в любое время во время разработки, возможно, 5 раз в минуту,просто чтобы убедиться, что небольшой рефакторинг не сломает что-то, например.
С другой стороны, тесты контроллера запускают всю пружину, что по определению не так быстро.Что касается внешних зависимостей, в зависимости от конфигурации фиктивного MVC вы можете даже запустить какой-то внутренний сервер для обслуживания запросов, так что это (IMO) не является модульным тестом.Вот почему мы решили запустить те, у которых есть отказоустойчивый плагин, и проводить интеграционные тесты.
Конечно, при правильном использовании конфигурации Spring могут кэшироваться Spring между тестами, но этот факт может только помочь и сделать интеграционные тесты.работать быстрее, но это не значит, что такого рода тесты являются юнит-тестами.