当前位置: 首页 > article >正文

java:springboot单元测试spring-boot-starter-test

背景

Java的单元测试可以使用多个框架,其中比较流行的包括:

  • JUnit:JUnit是Java单元测试最常用的框架,它提供了一套丰富的API,可以方便地编写测试用例和测试套件。JUnit 5是JUnit的最新版本,引入了许多新功能和改进。
  • Mockito:Mockito是一个模拟框架,可以模拟对象的行为和状态,以便在单元测试中检查方法的调用和参数。它提供了一组强大的API,可以方便地创建模拟对象和验证方法调用。
  • Spring Test:如果你正在使用Spring框架开发应用程序,那么可以使用Spring Test框架进行单元测试。Spring Test提供了一套完整的测试解决方案,可以方便地测试Spring应用程序的各种方面。

Spring Boot Test的主要特点包括:

  • 快速创建测试环境:通过使用Spring Boot的自动化配置功能,可以快速创建测试环境,无需手动配置。
  • 提供丰富的测试功能:Spring Boot Test提供了丰富的测试功能,包括注解支持、MockMvc、RestTemplate等,可以方便地进行单元测试和集成测试。
  • 集成JUnit和Mockito:Spring Boot Test集成了JUnit和Mockito等测试框架和模拟框架,可以方便地编写测试用例和模拟对象。
  • 简化测试配置:通过使用Spring Boot的自动化配置功能,可以简化测试配置,只需关注测试用例的编写。

Spring Boot Test 包含了这些库

  • JUnit 5:包含兼容JUnit4,Java 应用程序单元测试的事实标准
  • Spring Test 和 SpringBootTest:对Spring Boot应用程序的公共和集成测试支持
  • AssertJ:流式断言库
  • Hamcrest:匹配对象库
  • Mockito:Java 模拟框架
  • JSONassert:JSON 断言库
  • JsonPath: JSON XPath

MockMvc概念

MockMvc是Spring Test模块的一部分,它允许我们对Spring MVC控制器进行单元测试,而无需启动完整的Spring应用上下文。

MockMvc可以模拟HTTP请求和响应,MockMvc就像是一个虚拟的Spring MVC,能够让我们快速测试控制器。

MockMVC的基本步骤

(1) mockMvc.perform执行一个请求。

(2) MockMvcRequestBuilders.get(“XXX”)构造一个请求。

(3) ResultActions.param添加请求传值

(4) ResultActions.accept()设置返回类型

(5) ResultActions.andExpect添加执行完成后的断言。

(6) ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如处使用print()输出整个响应结果信息。

(7) ResultActions.andReturn表示执行完成后返回相应的结果。

实例化

方法一:通过参数指定一组控制器,这样就不需要从上下文获取

mockMvC = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();

方法二:指定WebApplicationContext 将会从该上下文获得相应的控制器并得到相应的MockMvc

mockMVC=MockMvcBuilders.webAppContextSetup(webApplicationContext).build();

步骤

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

1、双击选中你要测试的类,点击 Navigate
在这里插入图片描述
2、注意点击 Test 的时候鼠标要放在对应的类上
在这里插入图片描述
3、勾选你想要的
在这里插入图片描述
这时候生成的代码是这样的

package com.zhangyu.controller;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class HelloWorldControllerTest {

    @BeforeEach
    void setUp() {
    }

    @AfterEach
    void tearDown() {
    }

    @Test
    void index() {
    }
}

根据上面的 MockMVC的基本步骤 我们编写代码

package com.zhangyu.controller;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class HelloWorldControllerTest {

    private MockMvc mvc;

    @BeforeEach
    void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }

    @Test
    void index() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
}

稍微解释一下这个几个新的注解:

  • @SpringBootTest:获取启动类,加载配置,寻找主配置启动类(被 @SpringBootApplication 注解的)
  • @RunWith(SpringRunner.class):让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持。

http://www.kler.cn/a/132244.html

相关文章:

  • UnoCss(原子化css引擎) 让你的开发更轻松愉快
  • 通信原理板块——奇偶监督码、方阵码、恒比码、正反码
  • 千年TGS服务器日志报错如何解决
  • Typora for Mac:打造全新文本编辑体验
  • 【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!
  • 大带宽服务器需要选择哪些节点
  • Pattern Recognition投稿经验
  • mysql添加外键
  • Python-pptx教程之二操作已有PPT模板文件
  • 分布式任务调度-XXL-job
  • EasyExcel导入从第几行开始
  • 【深度学习】pytorch快速得到mobilenet_v2 pth 和onnx
  • 大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17
  • 【蓝桥杯 第十五届模拟赛 Java B组】训练题(A - I)
  • 读书笔记:彼得·德鲁克《认识管理》第24章 管理岗位的设计与内容
  • UniApp中的数据存储与获取指南
  • phpStorm Xdebug调试 加FireFox浏览器
  • 【fbtft】如何添加fbtft驱动
  • [最新榜单] 智能手机数据恢复的 10 款最佳应用
  • LLM大模型 (chatgpt) 在搜索和推荐上的应用