Модульное тестирование SpringBoot: автоматическая настройка MockMvc
Модульное тестирование SpringBoot: автоматическая настройка MockMvc

Автоматическая настройка MockMvc

Выше мы упоминали, что @AutoConfigureMockMvc предоставляет функцию автоматической настройки MockMvc и создания экземпляра MockMvc.

Инструмент тело поколение код существовать spring-boot-test-autoconfigure элемент глаз середина MockMvcАвтоконфигурация с двигаться соответствовать набор добрый Внутри . и Должен с двигаться соответствовать набор добрый из рожденный эффект снова вовлекать и Понятно@Аннотация AutoConfigureMockMvc。книга Фестивальяих Сразупримерно Приходить Понятноразвязатьодин Вниз@AutoConfigureMockMvc и MockMvcAutoConfiguration.

Аннотация AutoConfigureMockMvc

начальство Фестивальизпримерребеноксерединаделатьиспользовать@Аннотация AutoConfigureMockMvcПриходитьвестивходитьначинатьдвигатьсяодин Юаньтестпытатьсяизсдвигаться Примечаниевходить,тем самым Примечаниевходить MockMvc добрыйиз Бобы. Итак, @AutoConfigureMockMvc только что ввели MockMvc из Бин?и Нетдаиз,яих Приходсмотреть один Вниз

поколениекодязык:javascript
сложныйсистема
@AutoConfigureMockMvc изисточникпоколениекод。
@Target({ ElementType . TYPE,ElementType .METHOD })
@Retent ion(RetentionPolicy . RUNTIME)@Documented
@Inherited
@ImportAutoConfiguration
@PropertyMapping(" spring. test . mockmvc")
public @interface AutoConfigureMockMvc {
//данетотвечать в сторону MockMVC Примечаниекнига Приходитьсотвечатьиспользоватьпрограмманачальство Внизискусствоиз filter,тихийраспознаватьдля true
boolean addFilters() default true;
// каждый раз MockMVC настраиватьиспользоватьназадотвечатьнравитьсячтобить EMvcResult информация
@PropertyMapping(skip = SkipPropertyMapping .ON DEFAULT _VALUE)
MockMvcPrint print() default MockMvcPrint . DEFAULT;
//нравитьсяфрукты MvcResult толькосуществоватьтестпытатьсянеудачачас Просто распечатайтеинформация。true,Это означает только существованиеfailedчас print
boolean printOnlyOnFailure() default true;
/когда HtmUnit существоватьдобрыйпутьначальствочас,данетотвечать Долженсдвигатьсясоответствоватьнабор webCliento тихийраспознаватьдля true
@PropertyMapping( "webclient . enabled")
boolean webClientEnabled() default true;
//когда Selenium Кусочек Вдобрыйпутьначальствочас,данетотвечатьсдвигатьсясоответствоватьнабор WebDriver。тихийраспознавать для true
@PropertyMapping("webdriver . enabled")
boolean webDriverEnabled() default true;
}

AutoConfigureMockMvc середина Конечноправедныйиз Атрибуты относительно простыодин,удалять Понятно print свойстводаиспользовать Всоответствоватьнаборкаждый раз Печать после вызова MockMVC MvcResult информация Изснаружи,Что Оставатьсяизсоответствоватьнаборвседлянастраиватьнаборособенный Конечно Привязанностьсостояние Внизданетруководить Взаимноотвечатьвпричина。Можетобъединитьначальствоописыватьпоколениекодсерединаиз Примечаниевыпускатьотделениеточка Понятноразвязатьверноотвечатьсвойствоизподробныйтонкийдостижениеспособный。такой жечас,существоватьначальство Фестивальиз Реальностьпримерсередина(такжеда Проходитьчасто Привязанностьсостояние Вниз)яихибезиметьруководитьособенныйособенныйизсоответствоватьнабор,Дукаииспользовать Долженаннотациясерединаизтихийраспознаватьценить。

существовать AutoConfigureMockMvc источниккодсередина, я сосредоточусь на его комбинации из@ImportAutoConfiguration аннотация 。Должен Примечание развязать такой же Образец да Spring Boot с двигаться соответствовать набор элемент глаз нести для из ,Что достижение способный добрый Похож на @EnableAutoConfiguration, но немного отличается.

@lmportAutoConfiguration такой же Образециспользовать Вгидвходитьсдвигатьсясоответствоватьнабордобрый,Неттолько Можетккартина@EnableAutoConfiguration Что Образец Рядудалятьобратитесь к Конечноизсдвигатьсясоответствоватьнабордобрый,возвращаться Можеткобратитесь к Конечноделатьиспользовать Которыйсдвигатьсясоответствоватьнабордобрый,эта разница между ними тяжелая, хотеть одна.

Кроме того, @ImportAutoConfiguration делатьиспользоватьиз Сортировать с помощью

поколениекодязык:javascript
сложныйсистема
@EnableAutoConfiguration из Взаимнотакой же,Проходитьчасто Привязанностьсостояние Вниз,учреждатьприоритетделатьиспользовать
@EnableAutoConfiguration аннотацияруководитьсдвигатьсясоответствоватьнабор. носуществоватьодин Юаньтестпытатьсясередина,но Может Рассмотрите приоритетделатьиспользовать
@lmportAutoConfiguration。Вниз Лицом к лицу один Внизэтоизисточниккодидостижениеспособный,поколениекоднравиться Вниз。
@Target(ElementType . TYPE)
@Retention( RetentionPolicy . RUNTIME)
@Documented@Inherited
@Import( ImportAutoConfigurationImportSelector. class)
public @interface ImportAutoConfiguration {
//обратитесь к Конечновестивходитьизсдвигатьсясоответствоватьнабордобрый
@AliasFor("classes")
Class<?>[] value() default {};
//обратитесь к Конечновестивходитьизсдвигатьсясоответствоватьнабордобрый。нравитьсяфруктыдлянулевой,ноделатьиспользовать ME TA- INF/spring. factories середина Примечаниекнигаизобратитесь к Конечнодобрый
//Чтосередина spring. factories середина Примечаниекнигаиз key дляодеяло Долженаннотацияиздобрыйиз Полный лимит Конечноимя
@AliasFor("value")
Class<?>[] classes() default {};
/Рядудалятьобратитесь к Конечносдвигатьсясоответствоватьнабордобрый
Class<?>[] exclude() default {};
}

начальствоописыватьпоколениекодсерединазакрывать В ImportAutoConfiguration гидвходитьиз Selector и Извпередговоритьразвязать@EnableAuto-Configuration часизделатьиспользоватьпроцессбаза Искренне,яих Нет Повторное назначениеописывать。

См. ниже ImportAutoConfiguration середина Конечноправедныйизсвойство。Проходить Проходить value свойство,нестидля Понятнообратитесь к Конечносдвигатьсясоответствоватьнабордобрый из достижение способный , Может к Проходить Проходить тонкий зерно степень контроль система ,корень в соответствии с нуждаться хотеть вести | входить Взаимно отвечать достижение способный из с двигаться соответствовать набор . без Существует глобальный атрибут @EnableAutoConfiguration-times Примечаниевходить рожденныйэффектиз, но он обладает гибкостью.

Дажедостойное Примечание, означающее свойства классов,этотакжедаиспользовать Приходитьобратитесь к Конечносдвигатьсясоответствоватьнабордобрыйиз,ноэтоизособенныйособенный Извсуществовать В,нравитьсяфруктыеще нетруководитьобратитесь к Конечно,новстречатихийраспознаватьпоискэлементглаз ME TA-INF/spring.factories искусствокускисередина Примечаниекнигаиздобрый,нодаэтопоискиз Примечаниекнигадобрыйсуществовать spring.factories серединаиз key да от @ImportAutoConfiguration аннотацияиздобрыйиз Полный лимит Конечноимя。очевидно,этотвнутрииз key для org.springframework. boot.test.autoconfigure.web.servlet.Auto-ConfigureMockMvc 。к начальство достижение способный также Сразу развязать выпускать Понятно для Разнообразный Что? существовать один Юань тест пытаться середина Даже много из да делать использовать@lmportАвтоматическая настройка аннотация Приходитьруководитьсдвигатьсясоответствоватьнабор Понятно。

существовать spring-boot-test-autoconfigure элементглазиз spring.factories искусствокускисерединаиз Взаимнозакрыватьсоответствоватьнаборнравиться Вниз。

поколениекодязык:javascript
сложныйсистема
# AutoConfigureMockMvc auto-configuration imports
org. springframework . boot . test . autoconfigure . web. servlet . AutoConf igureMockMv
org. springframework. boot . test . autoconfigure . web . servlet . MockMvcAutoConfigur
ation, \
org. springframework . boot . test . autoconfigure . web . servlet . MockMvcWebClientAut
oCon-
figuration, \
org . springframework. boot . test. autoconfigure . web . servlet. MockMvcWebDriverAut
oCon-
figuration, \
org. springframework . boot . autoconfigure . security. servlet. SecurityAutoConfiguration,\
org. springframework . boot . autoconfigure . security . servlet . UserDetailsServiceA
uto-
Configuration, \
org. springframework. boot . test . autoconfigure . web . servlet . MockMvcSecurity
Configuration

также Сразуда говорит,когдаделатьиспользовать@lmportAutoConfiguration аннотация,иеще нетобратитесь к Конечно classes свойствоценитьчас,тихийраспознаватьсдвигатьсясоответствоватьнаборначальствоописыватьсдвигатьсясоответствоватьнабордобрый。

закрывать В @ImportAutoConfiguration я их Сразу говорить этот Что? много ,читать ВОЗ друг друг Может к верно В соответствии с@EnableAuto-Configuration Взаимнозакрыватьглава Фестивальсерединанестидляизметод,когдаделать упражненияс ХОРОШОчитатьчитать Долженаннотациягидвходитьиз ImportAutoConfi-gurationlmportSelector。Вниз Фестивальяихксоответствоватьнаборсерединаиз MockMvcAutoConfigurationдляпример,говоритьразвязать MockMvc Взаимнозакрыватьизсдвигатьсяизменятьсоответствоватьнабор。

Автоматическая настройка MockMvcAutoConfiguration

начальство один Фестиваль я их Знать дорога Проходить Проходить делать использовать @AutoConfigureMockMvc Примечание развязать встреча гид входитьMockMvcAutoCon-figuration сдвигатьсясоответствоватьнабордобрый,Должендобрый Сразудаспециализированныйдля MockMvc Взаимнозакрыватьдостижениеспособныйнестидлясдвигатьсясоответствоватьнабориз。

Сначала посмотри MockMvcAutoConfiguration изаннотацияи строительствометодотделениеточкаисточникпоколениекод。

поколениекодязык:javascript
сложныйсистема
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication(type = Type . SERVLET)
@AutoConfigureAfter (WebMvcAutoConfiguration. class)
@EnableConfigurationProperties({ ServerProperties. class, WebMvcProperties.c
lass } )
public class MockMvcAutoConfiguration {
private final WebApplicationContext context;
private final WebMvcProperties webMvcProperties;
MockMvcAutoConfiguration(WebApplicationContext context, WebMvcProperties
webMvcProperties) {
this. context = context;
this
. webM
Properties = webMvcProperties; }}

аннотацияотделениеточкаобъяснятьяркий,MockMvcAutoConfiguration нуждаться хотетьсуществовать Web отвечатьиспользоватьпрограммадобрыйформадля Servlet,исуществоватьWebMvcAutoConfiguration с двигатьсясоответствоватьнабор Изназадруководитьсдвигатьсясоответствоватьнабор。закрывать В WebMvcAutoConfigurationяихсуществоватьвперед面глава Фестивальужеговоритьприезжать,этотвнутри Нет Повторное назначениеописывать。Другой снаружи,Проходить Проходить @ EnableConfigurationProperties гид входить Понятно ServerProperties и WebMvcProperties дваиндивидуальныйсоответствоватьнаборсвойстводобрый,и Проходить Проходитьструктураметоднастраиватьнабордляпеременные-члены。

Выберите ниже MockMvcAutoConfiguration середина Несколькоиндивидуальный Относительно тяжелыйхотетьизсдвигатьсясоответствоватьнабор Bean Приходитьруководитьговоритьразвязать,голова Сначала посмотри DispatcherServletPath из Примечаниевходить。

поколениекодязык:javascript
сложныйсистема
@Bean
@Condit ional0nMi ssingBean
public DispatcherServletPath dispatcherServletPath() {
return () -> this . webMvcProperties . getServlet() . getPath();}

когда Позволятьустройствосередина Нетжитьсуществовать DispatcherServletPath из Bean час,встречасоздаватьучреждатьодининдивидуальный DispatcherServletPath выполнить добрый из верно слон , и Примечание входить Позволять устройство 。Что середина DispatcherServletPath да один индивидуальный ловить рот , использовать Приходить нести дляDispatcherServlet Местонуждатьсяпутьизподробныйтонкийинформация。существоватьначальствоописыватьпоколениекодсерединавыполнить Понятно DispatcherServletPath изgetPath метод и возврат WebMvcProperties соответствоватьнабор:искусствокускитихийраспознавать(“") Или обратитесь к Конечноиз Web путь доступа.

MockMvc хозяин хотеть да Проходить Проходить MockMvcBuilder создавать учреждать из , тихий распознавать Привязанность состояние Вниз Реальность пример изменять ПонятноDefaultMock-MvcBuilder,Взаимнозакрыватьпоколениекоднравиться Вниз。

поколениекодязык:javascript
сложныйсистема
@Bean
@Conditional0nMi ssingBean(MockMvcBuilder . class)
public DefaultMockMvcBuilder mockMvcBuilder(List<MockMvcBuilderCustomizer>
customizers) {
DefaultMockMvcBuilder builder = MockMvcBuilders . webAppContextSetup(this. (
ontext) ;
builder . addDispatcherServletCustomizer (new MockMvcDi spatcherServletCusto-
mizer(this . webMvcProperties));
for (MockMvcBuilderCustomizer customizer : customizers) {
customizer. customize(builder);}
return builder;}

когда Позволять устройство середина Нет жить существовать MockMvcBuilder из Bean час ,Проходить Проходить MockMvcBuilders изwebAppContextSetup методсоздаватьучреждать DefaultMockMvcBuilder,Однаконазаднастраиватьнабор DispatcherServlet Приложение MockMvcBuilder из Конечно система изменять соответствовать набор 。Что середина,закрывать В DispatcherServlet из настраивать набор Сразу существоватьMockMvcAutoConfiguration середина Конечноправедный,Чтоядерный Сердцепоколениекоднравиться Вниз。

поколениекодязык:javascript
сложныйсистема
@Override
public void customize(DispatcherServlet dispatcherServlet) {
dispatcherServlet . setDispatchOptionsRequest(this . webMvcProperties . isDispa
tch-
Opt ionsRequest());
dispatcherServlet . setDi spatchTraceRequest(this . webMvcProperties . isDispa-tchTraceRequest());
dispatcherServlet
. setThrowExceptionIfNoHandlerFound( this . webMvcProperties . isThrowExcep-
tionIfNoHandlerFound());
}

начальствоописыватьпоколениекод Сразудаверносоответствоватьнаборискусствокуски WebMvcProperties середина DispatcherServlet да нет точка волосы“HTTPOPTIONS"просить、данетточкаволосы“HTTPTRACE"、данет Бросать NoHandlerFoundExceptionруководитьсоответствоватьнабор。

когдаполучать Понятно MockMvcBuilder,удобный Можетксоответствоватьнабори Реальностьпримеризменять MockMvc Понятно,Взаимнозакрыватьпоколениекоднравиться Вниз。

поколениекодязык:javascript
сложныйсистема
@Bean
@ConditionalOnMi ssingBean
public MockMvc mockMvc (MockMvcBuilder builder) {
return builder . build(); }

На данный момент MockMvc ужеодеяло Реальностьпримеризменятьи Примечаниевходить Позволятьустройство Понятно。когда Однако,нравитьсяфрукты Позволятьустройствосередина Нетжитьсуществовать DispatcherServletверноотвечатьиз Bean,такжевстречаруководить Взаимноотвечатьизсдвигатьсясоответствоватьнабор。

поколениекодязык:javascript
сложныйсистема
@Bean
@ConditionalOnMissingBean
public
Di spatcherServlet dispatcherServlet (MockMvc mockMvc) {
return mockMvc . getDispatcherServlet();
}

этотвнутрида Проходить Проходить MockMvc нестидляизметод Приходитьполучать DispatcherServlet из Bean,и Примечаниекнига。

толькодаиметь Понятноначальствоописыватьсдвигатьсясоответствоватьнабормашинасистема,яихсуществоватьодин Юаньтестпытатьсячаспрямойловитьсуществоватьодин Юаньтестпытатьсядобрыйначальстводелатьиспользовать@AutoCon-figureMockMvc аннотация Изназад,удобный Можеткпрямойловить Проходить Проходить@Autowired верно MockMvc руководить Примечаниевходитьиделатьиспользовать Понятно。

краткое содержание

В этой главе кратко описывается Понятно Spring Boot серединаверноодин Юаньтестпытатьсяизподдерживать,кичастоиспользоватьизаннотация、один Юаньтестпытаться Реальностьпример。закрывать Водин Юаньтестпытатьсяоткрытьначинатьисдвигаться Примечаниевходитьяихговоритьразвязать@AutoConfigureMockMvc。добрыйпохожийиз,Spring Bootвозвращатьсянестидля Понятно Можетмного Дажедобавлятьиметь Иголкаверносекс、делатьиспользовать Быстрыйизаннотация,Сравниватьнравиться:Иголкаверно JSON из@JsonTest、 Иголкаверно MVCиз@WebMvcTest,Иголкаверно WebFlux из@WebFluxTest、 Иголкаверно Data JPA из@DataJpaTest ,Иголка верно JDBC из @JdbcTest Иголка верно MongoDB из @DataMongoTest 、 Иголка верно redis из@DataRedisTest ждать . но нравиться фрукты я их читать читать начальство описывать Примечание развязать из источник код, встреча волосы сейчас Что в причина машина система с @AutoConfigureMockMvc база Искренне , ядерный Сердце отделениеточка Вседелатьиспользовать Понятнокнигаглаваговоритьприезжатьиз@ImportAutoConfiguration аннотация。

книгаглаваизфокуси Неттолькотолькодахотетьучитьвстреча Каждыйнравитьсячтоделатьиспользоватьодин Юаньтестпытаться,Даже Тяжелыйхотетьиздапередаватьиндивидуальный Мысль:один Юаньтестпытатьсядагарантироватьпоколениекодкачествоиз Тяжелыйхотеть Способ,существовать Инструменттелоэлементглазсередина,нравитьсяфруктыиметь Можетспособный,Пожалуйста, попробуйте написать один Юаньтестпытатьсяпоколениекод.

книгаискусство Давать Каждыйговоритьразвязатьиз Внутри Позволятьда Модульное тестирование SpringBoot: автоматическая настройка MockMvc

  1. Вниз статья для всех говоряразвязатьиздаSpringBoot Анализ упаковки и развертывания развязать;
  2. Я считаю, что статья Нет неправильная и здруг Можетк к волосам эту статью закрывает Примечание редактора;
  3. Спасибо всем за вашу поддержку!

Эта статья Сразуда Пусть на небесах не будет ошибок Давать Каждыйточка Наслаждатьсяиз Внутри Позволять,Каждый что-то приобрел и получил от этого удовольствие,Если вы хотите изучить «Имногоиз», перейдите в общедоступную учетную запись WeChat и найдите меня.,яждать тебя ох.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose