首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在使用standaloneSetup的MockMvc进行单元测试时启用GlobalMethodsSecurity

在使用standaloneSetup的MockMvc进行单元测试时启用GlobalMethodsSecurity,可以通过以下步骤实现:

  1. 首先,确保你的项目中已经引入了Spring Security依赖。可以在项目的pom.xml文件中添加以下依赖:
代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 在你的测试类中,使用@WebMvcTest注解标记该类为Web MVC测试类,并指定要测试的控制器类。例如:
代码语言:txt
复制
@RunWith(SpringRunner.class)
@WebMvcTest(YourController.class)
public class YourControllerTest {
    // ...
}
  1. 创建一个@Configuration类,用于配置全局方法安全。在该类中,使用@EnableGlobalMethodSecurity注解启用全局方法安全,并指定要使用的安全拦截器。例如:
代码语言:txt
复制
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class GlobalMethodSecurityConfig extends GlobalMethodSecurityConfiguration {
    // ...
}
  1. 在测试类中,使用@Import注解导入上一步创建的全局方法安全配置类。例如:
代码语言:txt
复制
@RunWith(SpringRunner.class)
@WebMvcTest(YourController.class)
@Import(GlobalMethodSecurityConfig.class)
public class YourControllerTest {
    // ...
}
  1. 现在,你可以在测试方法中使用MockMvc对象进行单元测试,并且全局方法安全已经启用。例如:
代码语言:txt
复制
@RunWith(SpringRunner.class)
@WebMvcTest(YourController.class)
@Import(GlobalMethodSecurityConfig.class)
public class YourControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testYourMethod() throws Exception {
        mockMvc.perform(get("/your-endpoint"))
                .andExpect(status().isOk())
                .andExpect(content().string("Expected response"));
    }
}

这样,你就可以在使用standaloneSetup的MockMvc进行单元测试时启用GlobalMethodsSecurity了。请注意,以上步骤中的YourController/your-endpoint应根据你的实际情况进行替换。另外,关于GlobalMethodsSecurity的更多详细信息和配置选项,可以参考Spring Security官方文档:https://docs.spring.io/spring-security/site/docs/current/reference/html5/#method-security

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Springboot 使用单元测试

一、About 单元测试 单元测试其实是一种廉价技术,是由开发者创建运行测试代码,用于对程序模块(软件设计最小单位)进行正确性检验一种做法。...通常意义单元测试会用于验证某场景、某条件下某方法行为结果,举个例子: 我想验证 Equals 方法,在两个对象类型不一致应该返回 false 单元测试初衷,是对各个相互独立,互不影响基本单元基线测试...to return); 然而,在进行 mock 方法,需要使用 standaloneSetup 模式, 否则 mockito 无法工作。...mockMvc = MockMvcBuilders.standaloneSetup(controller).....单元测试是软件工程领域概念,而软件项目是分很多种类型,比如在早期软件工程中,就有不少基于C/S架构程序,这类程序体积相对庞大,往往需要对大量模块级方法进行单元测试; 现如今微服务体系架构中

1K00

使用MockMVC进行Controller单元测试

引入 由于MockMVC是Spring框架自带测试组件,因此只要在项目中引入spring-boot-starter-test这个测试套件就可以使用Spring-test库中MockMVC了。...接下来,将以查询接口为例,介绍如何对该接口进行单元测试。...与直接通过类和方法调用单元测试方式相比,通过使用MockMvc,有如下不同 1)通过URI进行接口调用,也就是额外测试了DispatcherServlet 和@RequestMapping 2) 对...@RequestParam进行了测试(感兴趣读者可以尝试调用接口不提供id=1入参) 3)对接口返回进行了断言 4)对接口返回对象反序列化进行了断言 下一篇将介绍如何使用MockMvc进行集成测试...,并分析MockMVC具体组成和使用方式。

5.2K10

SpringBoot基础之MockMvc单元测试

SpringBoot创建Maven项目中,会默认添加spring-boot-starter-test依赖。在《5分钟快速上手SpringBoot》中编写单元测试使用MockMvc。...本篇文章就围绕MockMvc在SpringBoot中使用进行讲解。 什么是Mock 在面向对象程序设计中,模拟对象(英语:mock object)是以可控方式模拟真实对象行为假对象。...为什么使用Mock对象 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。...MockMvcBuilders提供了对应创建方法standaloneSetup方法和webAppContextSetup方法,在使用时直接调用即可。...执行请求 3、添加验证断言 4、添加结果处理器 5、得到MvcResult进行自定义断言/进行下一步异步请求 6、卸载测试环境 注意事项:如果使用DefaultMockMvcBuilder进行

11.4K21

实战:Spring Boot 程序如何做好 Web 层测试

引言 本文将讨论如何针对 Spring Boot 程序 Web 层进行测试,借助 MockMvc API 以及常见测试库实现 Web 层方法测试覆盖,以及如何定制 MockMvc。...首先,创建对应 Controller 类单元测试类,使用 @SpringBootTest 注解标记测试类,来指明是一个基于 Spring Boot 单元测试类,运行测试类,框架会创建一个应用上下文...(Content-Type) 分类,主要有三种:表单提交使用格式-application/x-www-form-urlencoded,JSON 数据格式-application/json,文件上传使用格式...(new UserController()).build(); } } 需要注意使用 standaloneSetup 不会读取任何配置,更贴近这个控制器类单元测试。...Web 层代码做简单集成测试和单元测试,可以参考前文介绍方法。

93220

如何对Spring MVC中Controller进行单元测试

对Controller进行单元测试是Spring框架原生就支持能力,它可以模拟HTTP客户端发起对服务地址请求,可以不用借助于诸如Postman这样外部工具就能完成对接口测试。...如下将详细阐述如何使用MockMvc测试框架实现对“Spring Controller”进行单元测试,基于Spring Boot开发框架进行验证。 添加测试框架依赖: <!...支持对常见HTTP方法,:GET,POST,PUT,DELETE等,甚至还支持文件上传请求。...有2种方式: 1.使用JUnit提供Assert断言工具判断返回结果,这是一种非常普遍和常见方式 2.在MockMvc框架中可以通过andExpect()方法定义一个或多个预期结果,当其中一个期望结果断言失败...写在最后 使用Spring提供测试框架MockMvc可以非常方便地实现对HTTP服务接口进行单元测试,不要把基础功能验证工作都交给测试童鞋,应该通过单元测试来保证代码迭代稳定性。

2.1K30

单元测试(Spring)

单元测试是指对软件中最小可测试单元进行检查和验证,是软件开发过程中要进行最低级别的测试活动,软件独立单元将在与程序其他部分相隔离情况下进行测试。...单元测试好处:提高代码质量(实现功能、逻辑严密)、减少调试时间、隔离测试。 前期准备 单元测试工具类很多,一般选择流行Junit和Mockito进行测试演示。...目标测试Controller层,但Control层依赖Service层,而Service层又依赖DAO层,则我们对Controller进行普通测试,便连同Serice层和DAO层也一起测试了。...Controller来说要简单很多,大部分内容都在Controller里面讲过,不同地方就是Controller是使用mockMvc对象来模拟Controler被测方法,而在Service单元测试中则是直接调用...; (5)编写测试方法,使用定义变量作为参数进行测试。

4.7K10

单元测试不止Junit,会MockMvc才是高手!

2、为什么使用 mock 测试 避免开发模块之间耦合 轻量、简单、灵活 3、MockMVC 介绍 基于 RESTful 风格 SpringMVC 测试,我们可以测试完整 Spring MVC 流程...*和 MockMultipartHttpServletRequestBuilder*(文件上传使用),即用来 Mock 客户端请求需要所有数据。...(1)结果处理器,表示要对结果做点什么事情 (2)比如此处使用 MockMvcResultHandlers.print() 输出整个响应结果信息 8)MvcResult (1)单元测试执行结果,可以针对执行结果进行自定义验证逻辑...四、小结 这里只是用到了 MockMvc 很小一部分知识,更加深入学习会使你养成一种良好编写单元测试习惯,这是十分难得一种好习惯,推荐去看官方文档,然后动手去测试一下,为你编写每一个 Controller...方法进行测试,保证他们可靠性。

1.9K30

SpringMVC 之MockMVC注释 详解

我们无法手动new出来,于是就有了所谓Mock测试 对模块进行集成测试,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦...,比如启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller进行测试,可以通过引入MockMVC进行解决。...@WebAppConfiguration 使用这个注释会在执行单元测试时候真实启动一个web服务,然后开始调用ControllerRest API,待单元测试执行完后再将web服务停止....= MockMvcBuilders.standaloneSetup(myWebConfig).build(); mockMvc = builder.build(); }...在写单元测试时候,一般是对数据库进行增删改查操作,这个时候,如果之前删除了某条记录,自然后面的程序就找不到这条记录,所以可以通过配置spring事务管理或者测试框架来回滚,减少工作量,同时也保证每一次测试数据都是干净

1.5K20

SpringBoot(十五):MockMVC-web单元测试

简介 开发一个优秀系统,单元测试也是必不可少,Spring Boot 对单元测试也做了一些支持,MockMVC就是之一,可以模拟web端post,get请求,测试也能得到详细过程 使用方法 添加依赖...dependency> 编写测试代码 @SpringBootTest public class Springboot13StarterTestApplicationTests { private MockMvc...mockMvc; //初始化资源 @Before public void setMockMvc() throws Exception{ mockMvc= MockMvcBuilders.standaloneSetup...(new HelloController()).build(); } @Test public void test() throws Exception{ mockMvc.perform...第三个测试,就是普通测试了 以上代码只是spring-boot-starter-test 组件一部分功能,还有很多好玩一起学吧 源码 https://github.com/java-aodeng

90030

单元测试正确姿势

什么是单元测试 一个单元指的是应用程序中可测试最小一组源代码。 源代码中包含明确输入和输出每一个方法被认为是一个可测试单元。 单元测试也就是在完成每个模块后都进行测试。...单元测试也是一种特殊类型文档,相对于书面的文档,测试脚本本身往往就是对被测试代码实际使用代码,对于帮助开发人员理解被测试单元使用是相当有帮助。...适用范围 java后端研发人员 单元测试框架 推荐使用:Junit5 & Mockito 框架选择大同小异。...这里使用是:TestMe。其他插件都大同小异。.../testme Controller层测试 1、@BeforeEach中获取mockMvc实例 2、@Mock 模拟外部实例类,调用service 3、通过mockMvc调用http method请求

18110

小白搞 Spring Boot单元测试

单元测试中, 我们需要保证被测系统是独立(SUT 没有任何 DOC), 即当被测系统通过测试, 那么它在任何环境下都是能够正常工作. 编写单元测试, 仅仅需要关注单个类就可以了....背景 进行过JavaWeb开发同学都了解,在进行后台开发不仅需要完成系统功能开发,为了保证系统健壮性还要同步编写对应单元测试类。...基于Spring Boot开发项目中test包用于存放单元测试类,同时也提供了对应注解来进行单元测试编写,本文结合Mock对Spring Boot中单元测试进行总结。...来于网络,侵删 由于web服务或数据库不可达,可以对其进行Mock,在测试不需要真实模块也可完成测试。...[method] 不做任何返回 在使用Mockito对DAO层单元测试进行模拟后,得到单元测试类如下 : @RunWith(SpringRunner.class) public class UserDaoTest

4.5K10

SpringBoot对单元测试支持、常用单元测试功能使用实例

国内大多数开发人员对单元测试有所忽视,这也是我写本章内容原因所在。 本章会围绕 Spring Boot 对单元测试支持、常用单元测试功能使用实例以及 MockMvc自动配置机制展开。...spring-boot-starter-test 包 含类库 JUnit:一个 Java 语言单元测试框架。...在上面章节中实现了 Service 层单元测试示例,而当对 Controller 层进行单元测试,便需要使用模拟对象,这里采用 spring-test 包中提供 MockMvc。...下面以一个具体示例来对 MockMvc 使用进行讲解。在使用之前,依旧需要先引入对应依赖。...整个单元测试包含以下步骤:准备测试环境、执行 MockMvc 请求、 添加验证断言、添加结果处理器、得到 MvcResult 进行自定义断言/进行下一步异步请求、卸载测试环境。

1.6K30

5分钟快速上手Spring Boot

创建项目方式二 第二种创建方式就是直接使用IDEA进行创建,当然前提是IDEA中已经安装了Spring Boot相关插件——Spring Boot,如下图所示。 ?...我们会发现,其实此插件进行创建默认也是调用官方提供网址进行创建。选择JDK8,点击下一步。 ? 像第一种方式一样,填写相关参数信息,这里就不再重复描述。点击“Next”,进入选择依赖界面。...resources目录存放配置文件和资源文件,web项目的js、css、image、jsp等。test目录存放单元测试类。...mockMvc; @Before public void init() { mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController...2、如果业务中有其他类中有main方法,注意注释掉或替换为单元测试形式,因为springboot在启动时会寻找main方法,如果存在多个在使用java -jar启动时会出现莫名其妙问题。

83520

重学SpringBoot系列之Mockito测试

//在所有测试方法执行之前进行mock对象初始化 @BeforeAll static void setUp() { mockMvc = MockMvcBuilders.standaloneSetup...andDo: 添加ResultHandler结果处理器,比如调试打印结果到控制台 andReturn: 最后返回相应MvcResult,然后进行自定义验证/进行下一步异步处理 上面的整个过程,我们都没有使用到...---- @Transactional 该注解加在方法上可以使单元测试进行事务回滚,以保证数据库表中没有因测试造成垃圾数据,因此保证单元测试可以反复执行; 但是笔者不建议这么做,使用该注解会破坏测试真实性...核心问题: 在单元测试,测试类中 @Transactional 注解,会导致测试中 Entity 数据操作都是在内存中完成,最终并不会进行 commit 操作,也就是不会将 Entity 数据进行持久化操作...在单元测试中,模拟对象可以模拟复杂、真实对象行为, 如果真实对象无法放入单元测试中,使用模拟对象就很有帮助。

2.4K20

SpringBoot单元测试

SpringBoot单元测试 一、 单元测试概念 概念: 单元测试(unit testing),是指对软件中最小可测试单元进行检查和验证。在Java中单元测试最小单元是类。...为什么使用Mock对象? 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。...MockMvc概念 MockMvc是由spring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...可以在任何时候启用和禁用断言验证,因此可以在测试启用断言而在部署禁用断言。 使用断言是判断一个函数或对象一个方法所产生结果是否符合你期望那个结果。...优点 3: assertThat 不再像 assertEquals 那样,使用比较难懂“谓宾主”语法模式(:assertEquals(3, x);),相反,assertThat 使用了类似于“主谓宾

91120
领券