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

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

首先,创建对应 Controller 类单元测试类,使用 @SpringBootTest 注解标记测试类,来指明是一个基于 Spring Boot 单元测试类,运行测试类时,框架会创建一个应用上下文...接着使用 @AutoConfigureMockMvc 注解自动装配在 Web 层测试发挥关键作用 MockMvc 对象,我们编写控制器方法就是通过 MockMvc 实现测试调用。...MockMvc 进阶 前面我们使用 MockMvc Spring 帮我们注入,如果我们想要自定义 MockMvc,又该如何做呢?...为了加快运行测试用例时应用启动速度,官方提供了专门注解 @WebMvcTest,保证只初始化 Web 层,而不是整个应用上下文,甚至可以指定某个控制器,达到只对特定控制器以及依赖进行初始化作用,大大加速测试用例运行...(new UserController()).build(); } } 需要注意使用 standaloneSetup 不会读取任何配置,更贴近这个控制器单元测试

93920
您找到你想要的搜索结果了吗?
是的
没有找到

SpringBoot基础之MockMvc单元测试

SpringBoot创建Maven项目中,会默认添加spring-boot-starter-test依赖。在《5分钟快速上手SpringBoot》中编写单元测试使用MockMvc。...为什么使用Mock对象 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。...使用Mockito一般分三个步骤:1、模拟测试类所需外部依赖;2、执行测试代码;3、判断执行结果是否达到预期; MockMvc MockMvcspring-test包提供,实现了对Http请求模拟...,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...一些常用测试 1.测试普通控制器 mockMvc.perform(get("/user/{id}", 1)) //执行请求 .andExpect(model().attributeExists

11.4K21

Spring实战5-基于Spring构建Web应用主要内容

控制器最后一个任务就是将数据打包在模型中,然后指定一个视图逻辑名称(该视图名称解析HTML格式输出),然后将请求和模型、视图名称一起发送回DispatcherServlet(4)。...这里选择独立测试,跟HomeControllerTest不同地方在于,这里构建MockMvc对象时还调用了setSingleView()函数,这是为了防止mock框架从控制器解析view名字。...在很多情况下并没有这个必要,但是对于SpittleController控制器来说,视图名称和路径名称相同,如果使用默认视图解析器,则MockMvc会混淆这两者而失败,报出如下图所示错误: ?...repository、控制器MockMvc对象,跟之前几个测试用例相同。...涵盖了Spring MVC处理web请求处理过程、如何写简单控制器控制器方法来处理Http请求、如何使用mockito框架测试控制器方法。

2.5K20

SpringBoot单元测试

一般有两个方法: 在时间允许情况下,编写单元测试是程序员对代码自测,这是对自己代码负责。 写单元测试两个动机: 保证或验证实现功能。 保护已经实现功能不被破坏。...为什么使用Mock对象? 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。...MockMvc概念 MockMvcspring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...第四部分只是针对Service层做了测试,但是咱么也需要对Controller层(API)做测试,这时候就用到MockMvc了,它使得你无需启动项目工程就能测试这些接口 MockMvc实现了对Http请求模拟...public void save() throws Exception { String json"{……}"; //执行一个RequestBuilder请求,会自动执行SpringMVC流程并映射到相应控制器执行处理

93620

【保姆级教程】SpringBoot单元测试,文末介绍Postman基本使用

写单元测试两个动机: 保证或验证实现功能。 保护已经实现功能不被破坏。 三、Spring Boot引入MockMvc概念 1. 什么是Mock?...为什么使用Mock对象? 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。 3....MockMvc概念 MockMvcspring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...MockMvc实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证工具,这样可以使得请求验证统一而且很方便...void save() throws Exception { String json"{……}"; //执行一个RequestBuilder请求,会自动执行SpringMVC流程并映射到相应控制器执行处理

1.8K10

【保姆级教程】Spring Boot 单元测试

一、 单元测试概念 二、单元测试作用 三、Spring Boot引入MockMvc概念 四、Service层单元测试 五、Controller层单元测试 六、断言概念 七、新断言assertThat...写单元测试两个动机: \1. 保证或验证实现功能。 \2. 保护已经实现功能不被破坏。 三、Spring Boot引入MockMvc概念 \1. 什么是Mock?...为什么使用Mock对象? 使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。 \3....MockMvc概念 MockMvcspring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...public void save() throws Exception { String json"{……}"; //执行一个RequestBuilder请求,会自动执行SpringMVC流程并映射到相应控制器执行处理

28.2K86

保姆级教程:Spring Boot 单元测试

写单元测试两个动机: 保证或验证实现功能。 保护已经实现功能不被破坏。 三、Spring Boot引入MockMvc概念 什么是Mock?...使用模拟对象,可以模拟复杂、真实对象行为。如果在单元测试中无法使用真实对象,可采用模拟对象进行替代。...MockMvc概念 MockMvcspring-test包提供,实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,使得测试速度快、不依赖网络环境。...第四部分只是针对Service层做了测试,但是咱么也需要对Controller层(API)做测试,这时候就用到MockMvc了,它使得你无需启动项目工程就能测试这些接口 MockMvc实现了对Http请求模拟...public void save() throws Exception {         String json"{……}"; //执行一个RequestBuilder请求,会自动执行SpringMVC流程并映射到相应控制器执行处理

2.6K20

Spring Web MVC框架(十一) Spring Web MVC测试框架

Spring 也提供了完善测试框架,我们可以方便测试Spring Web MVC应用程序。为了使用这个测试框架,我们需要添加它依赖项。...建立测试环境 建立Spring Web MVC测试环境和普通Spring 单元测试略有不同。我们需要使用@WebAppConfiguration注解测试类。...这时候可以使用MockMvcBuilders.standaloneSetup来仅使用Spring默认配置配置某个控制器。...而其他域名会正常使用网络来连接,这可以让我们测试CDN等状况。 然后我们可以使用WebClient来创建测试了。这里我直接贴Spring文档里例子了。...我们可以利用MockMvc对象来创建RestTemplate,这样就会使用服务端逻辑来测试代码而不需要启动实际服务器。

1K10

Junit测试 - mockMVC

使用mock工具可以直接模拟http请求,不用直接产生网络请求环境,简化了测试流程。...MockMvc实现了对Http请求模拟,能够直接使用网络形式,转换到Controller调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证工具,这样可以使得请求验证统一而且很方便...用到注解 RunWith(SpringJUnit4ClassRunner.class): 表示使用Spring Test组件进行单元测试; WebAppConfiguration: 使用这个Annotate...假如使用需要发送json数据格式时将不能使用这种方式,可见后面被@ResponseBody注解参数解决方法 andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确...3 使用StatusResultMatchers对请求结果进行验证 4 使用ContentResultMatchers对请求返回内容进行验证 注意:在实际应用中如果应用到了数据库,在测试过程可能对数据库增删

1.3K20

第三十五章:SpringBoot与单元测试小秘密

测试控制器内添加了三个测试MVC方法,我们接下来开始编写单元测试代码。...@BootstrapWith,该注解才是配置了测试启动方式,以及启动时使用实现类类型。...测试index请求 MockMvc这个类是一个被final修饰类型,该类无法被继承使用。...这个类是Spring为我们提供模拟SpringMVC请求实例类,该类则是MockMvcBuilders通过WebApplicationContext实例进行创建,初始化MockMvc实例我们可以看下...测试添加 在测试类声明定义全局字段时,我们注入了GoodInfoJPA实例,当然单元测试也不仅仅是客户端也就是使用MockMvc方式进行,我们也可以直接调用JPA、Service进行直接测试

1.4K50

Spring Boot测试 - JUnit整合及模拟Mvc

模拟Mvc进行Web层测试 Spring Boot提供了MockMvc类,用于模拟HTTP请求和响应,以测试控制器(Controller)行为和结果。...以下是使用模拟Mvc进行Web层测试步骤: 创建测试类: 在测试源代码目录下,创建一个新测试类。 注入MockMvc使用@Autowired注解注入MockMvc实例。...编写测试方法: 使用MockMvc模拟HTTP请求,然后使用断言来验证响应结果。...下面是一个示例,展示了如何使用模拟Mvc测试一个简单控制器: @RunWith(SpringRunner.class) @SpringBootTest public class UserControllerTest...实际项目中应用 在实际项目中,测试是确保代码质量重要一环。以下是一些在实际项目中使用Spring Boot测试最佳实践: 覆盖率分析: 使用工具(如Jacoco)来分析测试覆盖率。

19410

Spring Boot :四大神器之Starter

如果以后需要升级Boot库和依赖项,只需在一个地方升级Boot版本,它将负责其余工作。 让我们实际测试我们在前一个例子中创建控制器。...有两种方法可以测试控制器使用模拟环境 使用嵌入式Servlet容器(如Tomcat或Jetty) 在这个例子中,我们将使用模拟环境: @RunWith(SpringJUnit4ClassRunner.class...出于测试目的,我们需要一个简单SMTP服务器。在这个例子中,我们将使用Wiser。...请注意,我们在程序中使用JavaMailSender bean - 这个bean是Spring Boot自动创建。...让我们回顾一下使用Spring Boot启动器好处: 增加pom可管理性 生产环境,测试和支持依赖配置 减少项目的总体配置时间

13610

重学SpringBoot系列之Mockito测试

使用接口测试工具Postman很方便啊 因为在做系统自动化持续集成时候,会要求自动做单元测试,只有所有的单元测试都跑通了,才能打包构建。比如:使用maven在打包之前将所有的测试用例执行一遍。...对象有以下几个基本方法: perform : 模拟执行一个RequestBuilder构建HTTP请求,会执行SpringMVC流程并映射到相应控制器Controller执行。...实现效果和使用MockMvcBuilders构建MockMVC对象效果是一样,但是有一个非常明显缺点:每次做一个接口测试,都会真实启动一次servlet容器,Spring上下文加载项目里面定义所有的...因为使用了依赖注入,注入了MockMvc对象,而在上一个例子里面是我们自己new。...而@AutoConfigureMockMvc注解,该注解表示mockMvc对象spring 依赖注入构建,你只负责使用就可以了。这种写法是为了让测试在servlet容器环境下执行。

2.4K20

第5章—构建Spring Web应用程序—SpringMVC详解

.编写基本控制器 在Springmvc 中,控制器只是方法上添加@RequestMapping注解类,这个注解声明了他们所要处理请求.如下所示: @Controller @RequestMapping....在这里,他目的就是辅助时间组件扫描.当请求"/"路径进来后,他会通过视图解析器返回到"/WEB-INF/views/home.jsp.通过jsp编写从而展示相关内容到浏览者面前. 5.2.1.测试控制器..."); } } 另外我们能够使用SpringMVC新测试特性来进行测试: public class HomeControllerTest { @Test public void...MockMvc mockMvc = standaloneSetup(controller).build(); //执行GET请求 语气得到home视图...mockMvc.perform(get("/")).andExpect(view().name("home")); System.out.println("模拟测试通过"); }

51840
领券