SpringBoot——整合Junit测试

news2024/10/3 21:28:39

简单介绍:

其实Spring Boot的测试在之前我们就已经使用过了,只不过当时我们只是使用,并不知道他具体是怎么实现的,我们稍微介绍一下他在做测试的时候是怎么实现的:

SpringBoot的测试:

在test文件夹下面,他有一个包,这个包名和我们的引导类的报名其实是一样的,并且在和引导类在同一个包下面就有一个后缀为Tests的Java类,这个类就是我们的测试类,这个类只是一个模板而已,我们可以用也可以不用,我们现在就创建一个自己的测试类,我们不用他这个:

 我们从头开始创建一个测试类,我们从头开始构建这个类,这样我们就知道这个类是如何来的,以及他是由什么构成的:

为了方便记忆,我们依旧从之前Spring项目中的测试类开始引入,在之前我们写Spring的测试类的时候,我们首先写了两个注解:

这里的报错不用管,因为我没有导包,关键在于我们看这两个注释,我们在之前写Spring的测试类的时候是不是有印象我们写过,这两个注释是什么意思呢?

@Runwith:指定Spring的运行器,这个运行器的概念不是很重要,我们在后期如果有机会再去讨论这个,这个是固定格式

@Configuration:指定Spring的配置文件或者配置类。 这才是最重要的一个注解。

这个注解的作用就是将我们的环境引入进来,环境自然就是我们的Spring容器,我们是测试也是在Spring容器环境下进行的,所以我们需要将Spring容器引入进来,但是在他给我们的测试类模板中我们并没有看到这两个注释,难道说这个测试不需要使用Spring容器吗?

肯定是使用到了Spring的容器,但是我们直观的看,他并没有引入任何的配置文件,那么就需要想到它是使用的引导类中的Spring容器。它通过扫描包的方式,在同一个包下扫描到引导类,然后通过引导类找到并加载Spring容器的方式加载容器,并从容器中获取Bean示例的方式进行测试。

注意这里测试类和引导类的包要一样,那么如果我们创建的自己的测试类,他和引导类不在一个包下会怎么样呢?

 我们把我们自己写的测试类放在其他包下,注意上图中的包,我们放在了MyTest包下面,这时候他和 引导类就不在同一个包下,这时候它会如何寻找Spring容器呢? 

 他找不到容器,并且抛出了一个异常,主要的内容是红色框里面的洋文,这个洋文的意思是:找不到@SpringBootConfiguration,您需要在测试中使用@ContextConfiguration或@SpringBootTest(class=...)。这一看明白了,找不到配置文件或者配置类,你要么用@ContextConfiguration给我指明你容器的位置,要么用@SpringBootConfiguration这个注解给我指出来也行。那么怎么指出来呢,其实就写上我们引导类的类就可以了,因为我们就是通过引导类去帮我们加载Spring容器,所以,如果我们要定义一个测试类,这个测试类和引导类并不在一个包下,那么我们就需要进行一下配置才能让他成功运行:

这样我们就可以让我们自己写的测试类找到Spring容器的位置并顺利的加载Spring容器进行测试,看运行结果:

在现阶段,我们只需要知道SpringBoot的测试类需要放在和引导类一个包或者它的子包下,并且在类上添加@SpringBootTest注解。如果自己写的类并不在引导类的包下或者它的子包下,那么就需要通过在@SpringBootTest的class属性中指定引导类的方式指向引导类,通过引导类找到Spring的容器,加载容器后获取Bean示例进行测试。 

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

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

相关文章

C语言CRC-16 CCITT格式校验函数

C语言CRC-16 CCITT格式校验函数 CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。基本的CRC-16校验算法实现,参考: C语言标准CRC-16校验函数。 不同同应用规范通过…

国产数据采集虚拟仪器板卡结合labview的应用

众所周知,虚拟仪器技术是根据用户的需求由软件定义通用测试硬件功能的系统。 通过将可重复配置的硬件应用到一个虚拟仪器系统,工程师可以使用软件来开发算法并把它们应用到一个嵌入式芯片,从而把虚拟仪器软件的可配置能力扩展至硬件。 以前只…

MySQL 主从复制与分离

基本概念 什么是读写分离 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 为什么要读写分…

详解线程与进程的区别

文章目录 一、进程(Process)二、线程(Thread)三、线程与进程的区别 一、进程(Process) 有关进程的介绍我们在前文已经详细介绍,有疑问的同学可以戳这里->操作系统与进程调度 我们知道&…

Guitar Pro8吉他谱编写软件下载安装及使用教程

音乐制作的许多程序都可以借助软件来完成,吉他谱的编写也是如此。今天要和大家分享的是吉他谱编写软件Guitar Pro,吉他谱怎么做电子版。 提到吉他谱的编写,有一款软件总是被第一时间想到,那就是Guitar Pro。 Guitar Pro是一款专业…

MHA高可用与故障切换

一、MHA的概述 1、 MHA的概念 MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故…

快速幂算法 Pow(x,n)函数的实现_20230515

快速幂算法 Pow(x,n)函数的实现 前言 如果要实现x的整数n次幂(xn),那么可以采用不同的策略,最直观和简单的算法就是利用递归或迭代把n个x连续相乘起来,从而获得幂乘结果。显而易见,此算法至少需要O(n)次运算,n比较大…

大语言模型友好的 API:借助集体智慧构建更好的软件架构

在过去的几个月里,我们一直在探索:如何将大语言模型用于研发效能提升?而随着,我们研究的逐步推进,慢慢进入一些深水区,诸如于:如何将 AI 更好地用于辅助架构设计?基于我们多年的架构…

​目标检测:如何有效实现YOLOv8

本文是一篇实用指南,介绍了如何使用命令行界面和Python来对图像、视频和实时网络摄像头中的物体进行检测。 介绍 目标检测是计算机视觉的一个子领域,主要涉及在图像或视频中以一定的置信度识别和定位物体。识别出的物体通常带有一个边界框,提…

c++ 11标准模板(STL) std::set(三)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…

如何使用chatgpt生成精美PPT提高工作效率

本教程收集于:AIGC从入门到精通教程 如何快速生成精美PPT提高工作效率 一、ChatGPT生成markdown源代码 二、Mindshow登录/注册 三、导入markd

Redis缓存架构详解

文章目录 Redis缓存结构详解前言Redis 缓存架构redis 和db数据一致性先写db还是写redis如果是先写db,再删除缓存呢&#xff1f;延迟双删 简单的缓存,并发不高,没啥流量简单的缓存,并发高,但是存在redis和 Db 双写不一致,读写并发不一致问题解决方案 1解决方案 2解决方案 3读写锁…

Linux常用命令——iconv命令

在线Linux命令查询工具 iconv 转换文件的编码方式 补充说明 iconv命令是用来转换文件的编码方式的&#xff0c;比如它可以将UTF8编码的转换成GB18030的编码&#xff0c;反过来也行。JDK中也提供了类似的工具native2ascii。Linux下的iconv开发库包括iconv_open,iconv_close,…

《程序员面试金典(第6版)》面试题 16.22. 兰顿蚂蚁(哈希映射,C++)

题目描述 一只蚂蚁坐在由白色和黑色方格构成的无限网格上。开始时&#xff0c;网格全白&#xff0c;蚂蚁面向右侧。每行走一步&#xff0c;蚂蚁执行以下操作。传送门 (1) 如果在白色方格上&#xff0c;则翻转方格的颜色&#xff0c;向右(顺时针)转 90 度&#xff0c;并向前移动…

【Vue2.0源码学习】虚拟DOM篇-Vue中的虚拟DOM

文章目录 1. 前言2. 虚拟DOM简介3. Vue中的虚拟DOM3.1 VNode类3.2 VNode的类型3.2.1 注释节点3.2.2 文本节点3.2.3 克隆节点3.2.4 元素节点3.2.5 组件节点3.2.6 函数式组件节点3.2.7 小结 3.3 VNode的作用 4. 总结 1. 前言 虚拟DOM&#xff0c;这个名词作为当下的前端开发人员…

Android Studio Flamingo (火烈鸟) 升级踩坑记录

由于想要验证Compose最新的debug特性&#xff0c;而我目前使用的版本&#xff08;Dolphin 小海豚&#xff09;不支持&#xff0c;查看官网说明需要最新版本&#xff0c;所以不得已进行了一下Android Studio版本升级&#xff0c;过程中遇到一些问题&#xff0c;本文仅做记录。&a…

FPGA驱动WM8731音频收发全网最细讲解 提供2套工程源码和技术支持

目录 1、前言2、WM8731音频解读3、vivado工程1介绍4、vivado工程2介绍5、上板调试验证6、资料获取 1、前言 本文用FPGA驱动WM8731音频芯片&#xff0c;实现音频相关的应用&#xff0c;适用于在校学生做毕业设计、研究生项目开发&#xff0c;也适用于在职工程师做项目开发&…

Ae 首选项:启动和修复

使用“首选项”里面的启动和修复 Start and Repair面板&#xff0c;可以解决 Ae 中的首选项设置问题&#xff0c;而无需更改、删除或者重新进行设置。 启动选项 Startup Options 启用主屏幕 Enable Home Screen 确定是否在启动 Ae 时显示主屏幕。 更改将在下次启动时有效。 显示…

element-plus 问题

对话框内部下拉框会在左上角 在对话框内打开下拉框后点击关闭按钮&#xff0c;尚未关闭的下拉框会在左上角出现&#xff08;或闪现&#xff09; 解决方案&#xff1a; popper-append-to-body 此方法失效&#xff0c;改用 :teleported"false" teleported&#xff1a;…

JDBC和数据库连接池

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/java-tutorial 】或者公众号【AIShareLab】回复 java 也可获取。 文章目录 JDBC 概述基本介绍模拟JDBCJDBC 带来的好处 JDBC 快速入门JDBC 程序编写步骤JDBC 第一个程序 获取数据库连接5种方式方式1…