小编典典

Spring Boot 2.1-不具有Spring Security自动配置的@WebMvcTest

spring-boot

在迁移到Spring Boot
2.1之前,我们@WebMvcTest结合以下服务在我们的服务中进行了一些控制器测试@AutoConfigureMockMvc

@WebMvcTest(SomeController.class)
@AutoConfigureMockMvc(secure = false)
public class SomeControllerTests { ... }

这样的结果是禁用了Spring Security配置,并且您可以在不模拟OAuth / JWT的情况下运行MVC测试。

在Spring Boot 2.1中,该secured属性已弃用,发行说明中提到:

[…] @WebMvcTest寻找一个WebSecurityConfigurer bean […]。

为了避免过时的secured属性和我们的加载,WebSecurityConfigurer我们将测试重写为:

@WebMvcTest(
    value = SomeController.class,
    excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = WebSecurityConfigurer.class),
    excludeAutoConfiguration = MockMvcSecurityAutoConfiguration.class)
public class SomeControllerTests { ... }

问题是:Spring Boot 2.1中是否有更紧凑的方法来定义此类测试?


阅读 614

收藏
2020-05-30

共1个答案

小编典典

是的,您应该拥抱事实,那就是朝着这个方向发展,而不是解决标志已被弃用的事实。

从Spring Boot 2.1开始,如果您具有Spring Security,则将使用自定义配置来保护测试的安全。实际的问题是什么?

如果您不想为某些测试进行身份验证,只需使用Spring Security的测试基础架构并添加即可@WithMockUser

2020-05-30