43.3.8 自动配置的Spring MVC测试
你可以使用@WebMvcTest
检测Spring MVC控制器是否工作正常。该注解将自动配置Spring MVC设施,并且只扫描注解@Controller
、@ControllerAdvice
、@JsonComponent
、Converter
、GenericConverter
、Filter
、WebMvcConfigurer
和HandlerMethodArgumentResolver
的bean。其他常规的@Component
bean将不会被扫描。
注 如果你需要注册额外的组件,比如Jackson模块
,你可以在你的测试上使用@Import
来导入另外的配置类。
通常@WebMvcTest
只限于单个控制器(controller)使用,并结合@MockBean
以提供需要的协作者(collaborators)的mock实现。@WebMvcTest
也会自动配置MockMvc
,Mock MVC为快速测试MVC控制器提供了一种强大的方式,并且不需要启动一个完整的HTTP服务器。
注 使用@AutoConfigureMockMvc
注解一个non-@WebMvcTest
的类(比如@SpringBootTest
)也可以自动配置MockMvc
。下面的例子使用了MockMvc
:
注 如果需要定义自定配置(auto-configuration)的元素(比如什么时候使用servlet filters),你可以使用@AutoConfigureMockMvc
的属性。
如果你使用HtmlUnit或Selenium, 自动配置将提供一个HTMLUnit WebClient
bean和/或WebDriver
bean,以下是使用HtmlUnit的示例:
注 默认地,为了确保驱动器在每个测试后退出,而且一个新的实例被注入,Spring Boot将会把WebDriver
bean放在一个特殊的“作用域”里。如果你不想要这个行为,你可以在你的WebDriver``@Bean
定义上加上@Scope("singleton")
。
最后更新于
这有帮助吗?