Обе формы на самом деле интеграционные тесты, так как вы тестируете интеграцию своего кода с весной DispatcherServlet
и поддерживаете инфраструктуру. Разница заключается в количестве поддерживающей инфраструктуры, которая используется за кулисами.
Данные приведены в справочнике по весне.
Интересные отрывки:
"webAppContextSetup" загружает фактическую конфигурацию Spring MVC , что приводит к более полному интеграционного теста. Поскольку структура TestContext кэширует загруженную конфигурацию Spring, она помогает поддерживать тесты быстро, даже когда добавляется больше тестов. Кроме того, вы можете вводить макеты услуг в контроллеры через конфигурацию Spring, в , чтобы оставаться сосредоточенным на тестировании веб-слоя.
...
"standaloneSetup" с другой стороны, это немного ближе к единице теста. Он проверяет один контроллер за раз, контроллер может быть , инъецированный макетными зависимостями вручную, и он не включает в себя Загрузка конфигурации Spring. Такие тесты более сфокусированы по стилю, и упрощают просмотр того, какой контроллер тестируется, независимо от того, требуется ли какая-либо конфигурация Spring MVC для конкретной конфигурации и т. Д. «standaloneSetup» также очень удобен для написания специальных тестов , чтобы проверить поведение или отладить проблему.
...
Так же, как с интеграцией против модульного тестирования, нет правильного или неправильного ответа . Использование «standaloneSetup» подразумевает необходимость дополнительных дополнительных тестов «webAppContextSetup» для проверки конфигурации Spring MVC . В качестве альтернативы вы можете написать все тесты с помощью «webAppContextSetup» и всегда тестировать фактическую конфигурацию Spring MVC .
...
Варианты, представленные в Spring MVC Теста различные остановки по шкале от классического блока до полной интеграции тестов. Разумеется, ни один из в Spring Spring MVC Test не является классическим модульным тестом, а ближе к нему подходит . Например, вы можете изолировать сервисный уровень с помощью mocks, инъецированных в контроллеры, а затем вы тестируете слой только через DispatcherServlet и с фактической конфигурацией Spring , так же, как вы можете протестировать уровень базы данных в изоляции слоев выше , Или вы можете использовать автономную настройку , фокусируясь на одном контроллере за раз, и вручную предоставляя конфигурацию , необходимую для ее работы.
Если у вас есть сомнения, я предлагаю сначала прочитать справочное руководство, прежде чем отправлять вопросы здесь. ;)
С уважением,
Сэм (автор Spring Framework TestContext)