玩转springboot之SpringBoot单元测试

SpringBoot单元测试

spring单元测试

之前在spring项目中使用单元测试时是使用注解@RunWith(SpringJUnit4ClassRunner.class)来进行的

@RunWith(SpringJUnit4ClassRunner.class)// 通过自动织入从应用程序上下文向测试本身注入bean
@WebAppConfiguration // 指定web环境
@ContextConfiguration(locations 
= { // 指定配置文件
        "classpath*:springmvc.xml"
})

使用@WebAppConfiguration注解之后还可以注入WebApplicationContext环境

@Autowired
private WebApplicationContext webApplicationContext;

private MockMvc mockMvc;

@Before
public void setup(){
    mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
MockMvc

我们可以使用MockMvc来进行模拟请求

@Test
public void test() throws Exception {
    MockHttpServletResponse response = mockMvc.perform(MockMvcRequestBuilders.get("/json/testJson"))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andReturn().getResponse();
    System.out.println(response.getContentAsString());

}
web安全测试

我们项目中经常会使用spring-security来进行权限,这就给我们的测试带来了麻烦,可以使用spring-security-test依赖来进行测试

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <version>5.1.5.RELEASE</version>
            <scope>test</scope>
        </dependency>

在进行开启支持springSecurity

@Before
public void setup(){
    mockMvc = MockMvcBuilders
            .webAppContextSetup(webApplicationContext)
            .apply(SecurityMockMvcConfigurers.springSecurity())
            .build();
}

在写单元测试方法时,可以使用@WithMockUser来设置用户

@Test
@WithMockUser(username = "root",password = "123456",roles = "ADMIN")
public void testSecurity() throws Exception {
    MockHttpServletResponse response = mockMvc.perform(MockMvcRequestBuilders.get("/json/testJson"))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andReturn().getResponse();
    System.out.println(response.getContentAsString());

}

然后使用测试的UserDetails来进行用户验证@WithUserDetails("root")

springboot单元测试

springboot中可以使用@SpringBootTest来进行单元测试,其中设置webEnvironment可以来定义运行模式,并在测试用例上使用@RunWith(SpringRunner.class)注解

enum WebEnvironment {

   // 加载WebApplicationContext,并提供一个mock servlet环境,使用该模式内嵌的servlet容器不会启动
   MOCK(false),

   // 加载EmbeddedWebApplicationContext,并提供一个真实的servlet环境,内嵌servlet容器启动,并监听一个随机端口
   RANDOM_PORT(true),

   // 加载EmbeddedWebApplicationContext,并提供一个真实的servlet环境,内嵌servlet容器启动,并监听一个定义好的接口
   DEFINED_PORT(true),

  // 使用SpringApplication加载一个ApplicationContext,但不提供servlet环境
   NONE(false);

}

示例

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests 
{

   @Autowired
   private CustomConfig config;

   @Test
   public void testProfile() {
      System.out.println(config.getName());
   }

}

https://zhhll.icu/2022/框架/springboot/基础/17.springboot单元测试/

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商出海第一步,云手机或成重要因素

电商出海第一步并非易事&#xff0c;挑战和机遇并存&#xff0c;出海企业或个人或将借助云手机从而达成商业部署全球化的目的&#xff1b; 下面我们从网络稳定、数据安全、成本、以及多平台适配方面来看&#xff0c;究竟为什么说云手机会成为出海的重要因素&#xff1b; 首先…

新手前端系列入门-什么是前端开发

一、什么是前端 前端&#xff0c;也称为前端开发或客户端开发&#xff0c;一般是指在构建网站或Web应用程序时&#xff0c;与用户直接交互的部分。就是指那些我们在网页上能看到、能直接跟用户打交道的部分。 简单来说&#xff0c;就是你打开一个网站&#xff0c;能看到的所有…

西门子大手笔又买一家公司,2024年“两买”和“两卖”的背后……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料&#xff0c;请到智能制造online知识星球自行下载。 今年&#xff0c;这家全球工业巨头不仅精准出击&#xff0c…

第4章 引擎提供的着色器工具函数和数据结构

4.1 UnityShaderVariables.cginc文件中的着色器常量和函数 4.1.1 进行变换操作用的矩阵 1.判断USING DIRECTIONAL LIGTH宏是否定义并分析与立体渲染相关的宏 立体多例化渲染技术的核心思想是一次向渲染管道上提交两份待渲染的几何体数据&#xff0c;减少绘制调用&#xff08;d…

【信创国产化】Nacos 2.3.2连接达梦数据库

JeecgBoot 目前提供的nacos版本号 2.3.2已经支持与达梦数据库对接。 jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos项目默认加入了达梦驱动和yml配置。如果你是老代码&#xff0c;可以参考下面的步骤手工集成 项目地址&#xff1a;https://github.com/jeecgboot/JeecgBoot…

Anaconda 安装与基本使用总结

最近需要在服务器上安装和使用aconada&#xff0c;发现之前总是在网上找教程&#xff0c;每次都要找&#xff0c;很麻烦。这次就自己写一个安装笔记。以备日后使用。 1.服务器系统版本 ubuntu22.04 2. 软件安装 aconda软件的安装可以下面的教程&#xff08;实测有效&#xf…

斐波那契查找算法

斐波那契查找原理&#xff0c;仅仅改变了中间结点(mid)的位置&#xff0c;mid不再是中间或插值得到,而是位于黄金分割点附近&#xff0c;即midlowF(k-1)-1(F代表斐波那契数列) F[k]F[k-1]F[k-2],>(F[k]-1) (F[k-1]-1)(F[k-2]-1)1 说明:只要顺序表的长度为F[k]-1,则可以将该…

arm64架构kvm情景分析 - type1型和type2型虚拟机管理器

内核版本&#xff1a;linux-v5.9 架构&#xff1a;arm64 1 type1型和type2虚拟机管理器 在arm64架构中&#xff0c;共有EL3到EL0四个异常级别&#xff0c;EL3异常级别最高。通常操作系统&#xff08;如linux&#xff09;运行在EL1&#xff0c;应用程序运行在EL0&#xff0c;EL…

Apache中使用CGI

Apache24 使用Visual Studio 2022 // CGI2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <stdio.h> #include <stdlib.h>#include <stdio.h>void main() {//设置HTML语言printf("Content-type:text/html\n\n&q…

柯桥外语学校【韩语干货】“-고 있다” VS “-아/어/여 있다”

01 相同点 都可以用于动词之后&#xff0c;且形式有相似之处。 &#xff08;1&#xff09;민호 씨는 전화를 하고 있습니다. 敏镐正在打电话。 &#xff08;2&#xff09;황민 씨는 영어를 공부하고 있습니다. 黄珉正在学习英语。 &#xff08;3&#xff09;그 사람이 문 …

06_Shell内置命令

06_Shell内置命令 一、如何判断是否内置命令 使用type命令可以区分命令种类 二、alias #!/bin/bash#设置别名 psef alias psef"ps -ef | grep java"#删除别名 psef unalias psef#删除所有别名 unalias -a以上设置都是临时性的&#xff0c;真正永久设置&#xff0c;…

“离职员工”试图打包资料带走,如何防止敏感数据外泄?

2010年5月间&#xff0c;某家电巨头四名前职工非法泄露该家电洗衣机重要生产和采购环节数据&#xff0c;给家电集团造成直接经济损失共计2952.35万元。 2017年1月&#xff0c;某科技巨头消费者终端业务6名员工&#xff0c;离职后拿着该企业终端的知识产权结果赚钱&#xff0c;最…

Flask和Django两个Web框架的特点和适用场景

Flask与Django是两个非常流行的Python Web框架&#xff0c;它们各有独特的特点和适用场景。下面将从不同方面对这两个框架进行比较。 一、特点比较 1. 轻量级与全功能 Flask&#xff1a; 轻量级&#xff1a;Flask是一个微框架&#xff0c;代码量少&#xff0c;灵活性高&…

【系统架构设计师】九、软件工程(软件测试)

目录 八、软件测试 8.1 测试分类 8.2 静态方法 8.2.1 静态测试 8.2.2 动态测试 8.2.3 自动化测试 8.3 测试阶段 8.3.1 单元测试 8.3.2 集成测试 8.3.3 确认测试 8.3.4 系统测试 8.3.5 性能测试 8.3.6 验收测试 8.3.7 其他测试 8.4 测试用例设计 8.4.1 黑…

编程视频用什么软件好看:探索最佳编程教学工具

编程视频用什么软件好看&#xff1a;探索最佳编程教学工具 在数字化时代&#xff0c;编程技能已成为一项不可或缺的核心竞争力。然而&#xff0c;对于初学者来说&#xff0c;如何有效地学习编程却是一个令人困惑的问题。观看编程视频成为了一种流行的学习方式&#xff0c;但如…

Spring-Data-ES-template工具类使用

SpringDataElasticsearch 提供了一个工具类 ElasticsearchTemplate&#xff0c;我们使用该类对象也可以对 ES 进行操作 1.操作索引 首先注入操作ES所需要的工具类(ElasticsearchTemplate)。 Autowiredprivate ElasticsearchTemplate template; 将createIndex改为false Docu…

springboot在线教育平台-计算机毕业设计源码68562

摘要 在数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;在线教育已成为教育领域的重要趋势。为了满足广大学习者对于灵活、高效学习方式的需求&#xff0c;基于Spring Boot的在线教育平台应运而生。Spring Boot以其快速开发、简便部署以及良好的可扩展性&#xff0c…

N6 word2vec文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 上周学习了训练word2vec模型&#xff0c;这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …

【启明智显分享】乐鑫HMI方案4.3寸触摸串口屏:水质检测仪应用解决方案

水是万物的源泉&#xff0c;了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff0c;它让我们能够洞察水的酸碱奥秘。 水是万物的源泉&#xff0c;了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff…

springboot药房库存管理系统-计算机毕业设计源码50588

目 录 摘要 1 绪论 1.1 研究背景与意义 1.2开发现状 1.3论文结构与章节安排 2 药房库存管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…