Выше мы упоминали, что @AutoConfigureMockMvc предоставляет функцию автоматической настройки MockMvc и создания экземпляра MockMvc.
Инструмент тело поколение код существовать spring-boot-test-autoconfigure элемент глаз середина MockMvcАвтоконфигурация с двигаться соответствовать набор добрый Внутри . и Должен с двигаться соответствовать набор добрый из рожденный эффект снова вовлекать и Понятно@Аннотация AutoConfigureMockMvc。книга Фестивальяих Сразупримерно Приходить Понятноразвязатьодин Вниз@AutoConfigureMockMvc и MockMvcAutoConfiguration.
начальство Фестивальизпримерребеноксерединаделатьиспользовать@Аннотация AutoConfigureMockMvcПриходитьвестивходитьначинатьдвигатьсяодин Юаньтестпытатьсяизсдвигаться Примечаниевходить,тем самым Примечаниевходить MockMvc добрыйиз Бобы. Итак, @AutoConfigureMockMvc только что ввели MockMvc из Бин?и Нетдаиз,яих Приходсмотреть один Вниз
@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 делатьиспользоватьиз Сортировать с помощью
@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 искусствокускисерединаиз Взаимнозакрыватьсоответствоватьнаборнравиться Вниз。
# 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 Взаимнозакрыватьизсдвигатьсяизменятьсоответствоватьнабор。
начальство один Фестиваль я их Знать дорога Проходить Проходить делать использовать @AutoConfigureMockMvc Примечание развязать встреча гид входитьMockMvcAutoCon-figuration сдвигатьсясоответствоватьнабордобрый,Должендобрый Сразудаспециализированныйдля MockMvc Взаимнозакрыватьдостижениеспособныйнестидлясдвигатьсясоответствоватьнабориз。
Сначала посмотри MockMvcAutoConfiguration изаннотацияи строительствометодотделениеточкаисточникпоколениекод。
@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 из Примечаниевходить。
@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,Взаимнозакрыватьпоколениекоднравиться Вниз。
@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 середина Конечноправедный,Чтоядерный Сердцепоколениекоднравиться Вниз。
@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 Понятно,Взаимнозакрыватьпоколениекоднравиться Вниз。
@Bean
@ConditionalOnMi ssingBean
public MockMvc mockMvc (MockMvcBuilder builder) {
return builder . build(); }
На данный момент MockMvc ужеодеяло Реальностьпримеризменятьи Примечаниевходить Позволятьустройство Понятно。когда Однако,нравитьсяфрукты Позволятьустройствосередина Нетжитьсуществовать DispatcherServletверноотвечатьиз Bean,такжевстречаруководить Взаимноотвечатьизсдвигатьсясоответствоватьнабор。
@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 аннотация。
книгаглаваизфокуси Неттолькотолькодахотетьучитьвстреча Каждыйнравитьсячтоделатьиспользоватьодин Юаньтестпытаться,Даже Тяжелыйхотетьиздапередаватьиндивидуальный Мысль:один Юаньтестпытатьсядагарантироватьпоколениекодкачествоиз Тяжелыйхотеть Способ,существовать Инструменттелоэлементглазсередина,нравитьсяфруктыиметь Можетспособный,Пожалуйста, попробуйте написать один Юаньтестпытатьсяпоколениекод.
Эта статья Сразуда Пусть на небесах не будет ошибок Давать Каждыйточка Наслаждатьсяиз Внутри Позволять,Каждый что-то приобрел и получил от этого удовольствие,Если вы хотите изучить «Имногоиз», перейдите в общедоступную учетную запись WeChat и найдите меня.,яждать тебя ох.