当前位置: 首页 > 知识库问答 >
问题:

Spring Boot 2.1-@WebMvcTest无Spring Security自动配置

鲍理
2023-03-14

在迁移到Spring Boot 2.1之前,我们在服务中使用@WebMvcTest@AutoConfigreMockMvc结合进行了几次控制器测试:

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

这导致Spring Security配置被禁用,您可以在不模拟OAuth/JWT的情况下运行MVC测试。

在Spring Boot 2.1中,不推荐使用secured属性,发行说明中提到

[...] @WebMvcTest查找WebSecurity配置程序bean[…]。

为了避免不推荐的安全属性和加载我们的Web安全配置器,我们将测试重写为:

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

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

共有2个答案

丁鸿云
2023-03-14

遇到了相同的情况,使用下面的注释而不是WebMvcTest有帮助。在这种情况下,WithMockUser没有帮助。

@WebAppConfiguration
@Import({MockMvcAutoConfiguration.class})
@EnableConfigurationProperties({ResourceProperties.class, WebMvcProperties.class})

WebMvcTest的控制器值中存在的类进入导入注释的值中。

资料来源:https://github.com/spring-projects/spring-boot/issues/14227#issuecomment-688824627

韦繁
2023-03-14

是的,你应该接受这样一个事实,即这是朝着那个方向前进的,而不是围绕国旗被弃用的事实。

从Spring Boot 2.1开始,如果您具有Spring Security性,那么您的测试将使用自定义配置进行安全保护。这到底有什么问题?

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

 类似资料:
  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe

  • 我们正在使用Spring框架5和Spring Boot 2.0.0。M6,我们也在使用WebClient进行反应式编程。我们为我们的反应式Restendpoint创建了测试方法,所以我查找了一些关于如何做到这一点的例子。我发现这个或这个以及许多其他的都一样。他们只是自动绑定一个WebTestClient。所以我尝试了同样的方法: 我无法运行此操作,因为我收到错误信息: 因此,似乎不存在自动配置。我

  • 本文向大家介绍SpringBoot 配合 SpringSecurity 实现自动登录功能的代码,包括了SpringBoot 配合 SpringSecurity 实现自动登录功能的代码的使用技巧和注意事项,需要的朋友参考一下 自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ 邮箱: 很多网站我们在登录的时候都会看到类似的选项,毕竟总让用户输入用户名密码是一件很麻烦的事。 自动登录功能

  • 我有一个sprig引导(版本1.5.6)应用程序,它使用以下内容: spring boot starter数据jpa(jpa存储库和实体) 现在,我正在为这个应用程序创建单元测试。在一个测试用例中,我有以下注释: 测试正确初始化了jpa存储库,我能够测试相同的。 然后我有另一个带有以下注释的测试: 此测试设置Mockmvc,但不会初始化JPA存储库。它只初始化配置的MVC部分。但我也需要初始化JP

  • 16. 自动配置 Spring Boot的自动配置机制尝试根据所添加的jar依赖来自动配置您的Spring程序。例如,如果HSQLDB在您的类路径上,而且您尚未手动配置任何数据库连接bean,那么我们会自动配置一个内存数据库。 您需要通过将@EnableAutoConfiguration或@SpringBootApplication注解添加到一个@Configuration类来激活自动配置。 应当

  • Spring Boot自动配置尝试根据您添加的jar依赖项自动配置Spring应用程序。 例如,如果HSQLDB在您的类路径上,并且您尚未手动配置任何数据库连接bean,则Spring Boot会自动配置内存数据库。 您需要通过将@EnableAutoConfiguration或@SpringBootApplication注解添加到其中一个@Configuration类来选择自动配置。 您应该只添