首页
学习
活动
专区
圈层
工具
发布

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

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

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

    SpringBoot基础之MockMvc单元测试

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

    12.2K24

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

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

    2.8K20

    SpringBoot单元测试

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

    1.2K20

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

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

    2.7K10

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

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

    37.1K107

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

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

    3.9K20

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

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

    1.6K10

    Junit测试 - mockMVC

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

    1.7K20

    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)来分析测试覆盖率。

    86310

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

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

    1.6K50

    Spring Boot :四大神器之Starter

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

    67010
    领券