Merge pull request #27823 from quaff
* pr/27823: Include WebMvcRegistrations beans in WebMvcTest Closes gh-27823
This commit is contained in:
commit
657b8cea51
|
@ -368,7 +368,7 @@ include::{docs-java}/features/testing/springbootapplications/jsontests/MyJsonAss
|
|||
[[features.testing.spring-boot-applications.spring-mvc-tests]]
|
||||
==== Auto-configured Spring MVC Tests
|
||||
To test whether Spring MVC controllers are working as expected, use the `@WebMvcTest` annotation.
|
||||
`@WebMvcTest` auto-configures the Spring MVC infrastructure and limits scanned beans to `@Controller`, `@ControllerAdvice`, `@JsonComponent`, `Converter`, `GenericConverter`, `Filter`, `HandlerInterceptor`, `WebMvcConfigurer`, and `HandlerMethodArgumentResolver`.
|
||||
`@WebMvcTest` auto-configures the Spring MVC infrastructure and limits scanned beans to `@Controller`, `@ControllerAdvice`, `@JsonComponent`, `Converter`, `GenericConverter`, `Filter`, `HandlerInterceptor`, `WebMvcConfigurer`, `WebMvcRegistrations`, and `HandlerMethodArgumentResolver`.
|
||||
Regular `@Component` and `@ConfigurationProperties` beans are not scanned when the `@WebMvcTest` annotation is used.
|
||||
`@EnableConfigurationProperties` can be used to include `@ConfigurationProperties` beans.
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ import java.util.Collections;
|
|||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
|
||||
import org.springframework.boot.context.TypeExcludeFilter;
|
||||
import org.springframework.boot.jackson.JsonComponent;
|
||||
import org.springframework.boot.test.autoconfigure.filter.StandardAnnotationCustomizableTypeExcludeFilter;
|
||||
|
@ -43,6 +44,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||
*
|
||||
* @author Phillip Webb
|
||||
* @author Madhura Bhave
|
||||
* @author Yanming Zhou
|
||||
* @since 2.2.1
|
||||
*/
|
||||
public final class WebMvcTypeExcludeFilter extends StandardAnnotationCustomizableTypeExcludeFilter<WebMvcTest> {
|
||||
|
@ -60,6 +62,7 @@ public final class WebMvcTypeExcludeFilter extends StandardAnnotationCustomizabl
|
|||
includes.add(ControllerAdvice.class);
|
||||
includes.add(JsonComponent.class);
|
||||
includes.add(WebMvcConfigurer.class);
|
||||
includes.add(WebMvcRegistrations.class);
|
||||
includes.add(javax.servlet.Filter.class);
|
||||
includes.add(FilterRegistrationBean.class);
|
||||
includes.add(DelegatingFilterProxyRegistrationBean.class);
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
|
|||
import org.junit.jupiter.api.Test;
|
||||
import org.thymeleaf.dialect.IDialect;
|
||||
|
||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
|
||||
import org.springframework.context.annotation.ComponentScan.Filter;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
import org.springframework.core.type.classreading.MetadataReader;
|
||||
|
@ -43,6 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
* Tests for {@link WebMvcTypeExcludeFilter}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
class WebMvcTypeExcludeFilterTests {
|
||||
|
||||
|
@ -55,6 +57,7 @@ class WebMvcTypeExcludeFilterTests {
|
|||
assertThat(excludes(filter, Controller2.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleControllerAdvice.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWeb.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWebMvcRegistrations.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleService.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
|
@ -72,6 +75,7 @@ class WebMvcTypeExcludeFilterTests {
|
|||
assertThat(excludes(filter, Controller2.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleControllerAdvice.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWeb.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWebMvcRegistrations.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleService.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
|
@ -89,6 +93,7 @@ class WebMvcTypeExcludeFilterTests {
|
|||
assertThat(excludes(filter, Controller2.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleControllerAdvice.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWeb.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleWebMvcRegistrations.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleMessageConverter.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleService.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
|
@ -106,6 +111,7 @@ class WebMvcTypeExcludeFilterTests {
|
|||
assertThat(excludes(filter, Controller2.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleControllerAdvice.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWeb.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWebMvcRegistrations.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleService.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isFalse();
|
||||
|
@ -121,6 +127,7 @@ class WebMvcTypeExcludeFilterTests {
|
|||
assertThat(excludes(filter, Controller2.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleControllerAdvice.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWeb.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleWebMvcRegistrations.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleMessageConverter.class)).isFalse();
|
||||
assertThat(excludes(filter, ExampleService.class)).isTrue();
|
||||
assertThat(excludes(filter, ExampleRepository.class)).isTrue();
|
||||
|
@ -180,6 +187,10 @@ class WebMvcTypeExcludeFilterTests {
|
|||
|
||||
}
|
||||
|
||||
static class ExampleWebMvcRegistrations implements WebMvcRegistrations {
|
||||
|
||||
}
|
||||
|
||||
static class ExampleMessageConverter extends MappingJackson2HttpMessageConverter {
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue