SpringBoot 集成Junit单元测试
学习文章: https://www.cnblogs.com/ysocean/p/6889906.html
开发工具: IDEA 2022.1.4
目录
目录
1. 概述
2. 实现步骤
2.1 maven导入依赖
2.2 随意代码演示(不推荐)
2.3 规范代码演示(推荐)
3. Junit相关其他注解
4. 注意事项
5. 结语
1. 概述
接触到Junit,应该是看别人Java代码有一个@Test注解开始。就百度了解下,从英文名看,是“测试”的意思。那么Java方法加入了注解@Test,则说明该方法可直接运行。
之前写类,如果要测试的话,就在main()方法测试,如果该类方法过多,都写在main的话,要不停的去注释代码,写新的测试代码。那么使用Junit的话,则简便很多,直接加入@Test注解即可。
观察效果,加入了注解后,方法行前面会有绿色的图标,点击图标,分别点击test()方法和main()方法,显示如下:
也就说,这个test()方法是可以直接运行了。
需要注意的是,加入@Test注解的方法,声明必须是public void并且无参
2. 实现步骤
2.1 maven导入依赖
<!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
2.2 随意代码演示(不推荐)
我在工具类中加入了main()和test()方法,用来测试getToken()方法,均可实现,但实际中不这么写,看自己随意。
public class JwtUtils {public static String SECRET= "1c2h3e4n5w6e7i8x9i0n";public static String getToken(Map<String, String> map){JWTCreator.Builder builder= JWT.create();map.forEach((k,v)->{builder.withClaim(k,v);});Calendar instance= Calendar.getInstance();instance.add(Calendar.HOUR, 2); //默认2小时过期builder.withExpiresAt(instance.getTime());String token= builder.sign(Algorithm.HMAC256(SECRET));return token;}public static DecodedJWT verfy(String token){DecodedJWT decodedJWT= JWT.require(Algorithm.HMAC256(SECRET)).build().verify(token);return decodedJWT;}@Testpublic void test() {Map<String,String> map=new HashMap<>();map.put("username", "1107230602");map.put("password", "0246813579");String token= JwtUtils.getToken(map);System.out.print(token);}public static void main(String[] args) {Map<String,String> map=new HashMap<>();map.put("username", "1107230602");map.put("password", "0246813579");String token= JwtUtils.getToken(map);System.out.print(token);}
}
2.3 规范代码演示(推荐)
在工程test目录下,如下路径,并创建测试类,一般以被测试目标类名+Test:
此处注意,在类名那里,也有一个绿色图标,运行这个图标,则是把整个测试类的所有@Test方法都执行,只有点击方法那里的绿色图标,才是执行指定方法。
3. Junit相关其他注解
以下代码源自: "https://www.cnblogs.com/ysocean/p/6889906.html" :
通过以下代码,可以理清Junit相关注解的搭配使用.
public class JunitTest {public JunitTest() {System.out.println("构造函数");}@BeforeClasspublic static void beforeClass(){System.out.println("@BeforeClass");}@Beforepublic void befor(){System.out.println("@Before");}@Testpublic void test(){System.out.println("@Test");}@Ignorepublic void ignore(){System.out.println("@Ignore");}@Afterpublic void after(){System.out.println("@After");}@AfterClasspublic static void afterClass(){System.out.println("@AfterClass");}
}
执行效果:
@BeforeClass
构造函数
@Before
@Test
@After
@AfterClass
4. 注意事项
注意:编写测试类的原则:
①测试方法上必须使用@Test进行修饰
②测试方法必须使用public void 进行修饰,不能带任何的参数
③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
④测试类所在的包名应该和被测试类所在的包名保持一致
⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
⑥测试类使用Test作为类名的后缀(不是必须)
⑦测试方法使用test作为方法名的前缀(不是必须)
5. 结语
Junit 单元测试框架
仅供参考.
相关文章:
SpringBoot 集成Junit单元测试
学习文章: https://www.cnblogs.com/ysocean/p/6889906.html 开发工具: IDEA 2022.1.4 目录 目录 1. 概述 2. 实现步骤 2.1 maven导入依赖 2.2 随意代码演示(不推荐) 2.3 规范代码演示(推荐) 3. Junit相关其他注解 4. 注意事项 5. 结语 1. 概述 接触到Junit,…...
Android开发之简单控件
文章目录一 文本显示1.1 文本设置的两种方式1.2 常见字号单位类型2.2 设置文本的颜色三 视图基础3.1 设置视图的宽高3.2 设置视图的间距3.3 设置视图的对齐方式四常用布局4.1 线性布局LinearLayout4.2 相对布局RelativeLayout4.3 网格布局GridLayout4.4 滚动视图ScrollView五 按…...
树状数组讲解
树状数组 文章目录树状数组引入例题AcWing241.楼兰图腾思路代码AcWing 242. 一个简单的整数问题思路代码AcWing 244. 谜一样的牛思路代码总结引入 树状数组主要维护的是这样一个数据结构: tr[x]表示以x为终点的长度为lowbit(x)的前缀和、最大值、最小值、最大公约数…...
每个Android开发都应需知的性能指标~
无论你是发布一个新的 Android 应用,还是希望提高现有应用的性能,你都可以使用 Android 应用性能指标来帮助你。 在这篇文章中,我将解释什么是 Android 应用性能指标,并列出8个需要考虑跟踪的维度和建议的基线。 什么是 Android…...
MSYS2安装
最近在学习windows上编译FFmpeg,需要用到msys2,在此记录一下安装和配置过程。 点击如下链接,下载安装包: Index of /msys2/distrib/x86_64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 我下载的是:ms…...
3/3考试总结
时间安排 7:30–7:50 看题,怎么感觉三道构造,T3 貌似有网络流背景。 7:50–8:30 T1,有一些简单的性质,缩减两端点后枚举一下翻转的区间就可以了。然后花了一点时间写 spj 调试。 8:30–10:20 T2,比较纯粹的构造题。有网络流做法,…...
Spark Streaming DStream转换
DStream上的操作与RDD的类似,分为Transformations(转换)和Output Operations(输出)两种,此外转换操作中还有一些比较特殊的算子,如:updateStateByKey()、transform()以及各种Window相…...
水果商城,可运行
文章目录项目介绍一、技术栈二、本项目分为前后台,有管理员与用户两种角色;1、管理员角色包含以下功能:2、用户角色包含以下功能:三、用户功能页面展示四、管理员功能页面展示五、部分代码展示六、获取整套项目源码项目介绍 一、…...
LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像
LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头…...
软件测试---测试分类
一 : 按测试对象划分 1.1 可靠性测试 可靠性(Availability)即可用性,是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务的时间占总时间的百分比表示。 1.2 容错性测试 行李箱 , 四个轮子 , 坏了一个 , 说明这个容错…...
剑指 Offer II 015. 字符串中的所有变位词
题目链接 剑指 Offer II 015. 字符串中的所有变位词 mid 题目描述 给定两个字符串 s和 p,找到 s中所有 p的 变位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 变位词 指字母相同,但排列不同的字符串。 示例 1: 输…...
【SpringCloud】SpringCloud详细教程之微服务比较
目录前言一.什么是微服务?为什么要使用微服务二.微服务对比三.企业开发场景前言 我会通过实际代码来给展示每个组件的用法 一.什么是微服务?为什么要使用微服务 分布式,把一个项目拆分成多个模块,每一个模块相当于一个服务。 微…...
二.项目使用vue-router,引入ant-design-vue的UI框架,引入less
根据前文《使用Vue脚手架工具搭建vue项目》搭建好脚手架后使用 1.vue-router 2.引入UI框架ant design vue 3.引入less 1.vue-router vue-router分为两种模式(默认为hash模式): hash history hash: 特征: 1.hash会在浏览器路径里带#号&#…...
网络安全怎么学?20年白帽子老江湖告诉你
很多人都知道龙叔是个老程序员,但却不知道其实我也是个H客,20年前我就开始痴迷于H客技术,可以说是网络安全方面的老江湖了。 到现在,我还依然会去研究这一块,偶尔会和一些网安的朋友交流技术,比如说红盟的…...
药房管理系统;药库管理系统
第一,主要功能: 本系统集日常销售、药品进销存、会员积分、GSP管理等药店所需的所有功能于一体,实现店铺管理的全部自动化。第二、新功能: 增加了“按功能查询药品”的功能,使软件用户可以根据客户的症状推荐合适…...
深眸科技|机器视觉提升制造性能,焕发传统企业智造新活力!
随着机器视觉技术的成熟与发展,其在工业制造中得到越来越广泛的应用。机器视觉在工业制造领域的应用朝着智能识别、智能检测、智能测量以及智能互联的完整智能体系方向发展。此外,快速变化的市场需求,不断涌入行业的竞争对手,让传…...
ubuntu安装SSH的方法
Ubuntu安装SSH的方法。14版的ubuntu经过测试,默认没有开启SSH,所以需要安装。 1、虚拟机设置网卡为桥接模式,即NAT。12版虚拟机默认的。 2、查看ubuntu使用的ip。 ifconfig即可查看,14版的ubuntu自带这个命令。 3、查看是否pi…...
哪种蓝牙耳机通话效果好?通话清晰的蓝牙耳机推荐
出门的时候,如果戴耳机和别人通话,就不必把耳机摘下来,接电话变得前所未有的简单。现在的蓝牙耳机,已经不是单纯的用来听音乐了,而是一种更好的功能。下面这四款蓝牙耳机不仅适合听歌,通话还清晰࿰…...
IT运维如何完成一场高质量复盘
复盘的终极目标是:还原事实,找到薄弱点加以改进。 提到复盘,很多人的第一反应是线上故障,有人要背锅了。 复盘真正的价值是还原事实,在薄弱处加以改进。如何做一次高质量的复盘,我们给出3点建议。 1、坦…...
JVM调优面试题——基础知识
文章目录1、JDK,JRE以及JVM的关系2、编译器到底干了什么事?3、类加载机制是什么?3.1、装载(Load)3.2、链接(Link)3.3、初始化(Initialize)4、类加载器有哪些?5、什么是双亲委派机制?6、介绍一下JVM内存划分(…...
三、mongdb 查询
一、 MongoDB文档检索 MongoDB中有多种方式可以检索文档: 1.1 查询过滤器 使用查询过滤器从集合中检索文档。查询过滤器是一组键值对,可按字段值查询文档。 例如: db.col.find({"status":"A"})这个示例查询status等于“A”的文档。 1.2 范围查询操作符…...
python的 ping 网络状态监测方法(含多IP)
ping 基本概念 ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Messag…...
【独家】华为OD机试提供C语言题解 - 单词反转
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明单词…...
Linux docker环境安装,docker-compose安装,jdk17安装
安装docker 删除之前安装的docker yum remove docker \docker-client \docker-client-latest \docker- common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-sqlinux \docker-engine-selinux \docker-engine \docker-ce安装yum工具 yum install -y y…...
界面开发(3)--- PyQt5用户登录界面连接数据库
文章目录数据库账户注册账号登录找回密码为了实现用户登录界面的登录功能,我们必须建立一个数据库,并把账号和对应的密码,存储到数据库中。如果输入的账号和密码与数据库中的一致,那我们就允许用户登录,进入新的界面。…...
以下真的没有任何要写的了,我需要凑字数,请大家原谅
以下真的没有任何要写的了,我需要凑字数,请大家原谅!!!!!!!!!!!!!!!&#…...
2023年 Java 发展趋势
GitHub 语言统计表明,Java在编程语言中排名第二,而在2022年的TIOBE指数中,Java排在第四。 抛开排名,Java是自诞生以来企业使用率最高的编程语言,作为一种编程语言,它比许多竞争对手都有更多的优点…...
Lsof命令介绍
LSOF(List Open Files)是一款功能强大的开源工具,用于列出当前系统上打开的文件和进程。该工具可以帮助系统管理员和开发人员快速查找正在使用某个文件的进程,以及在系统上使用磁盘空间最多的进程。 本文将介绍LSOF的基本用法和常…...
LeetCode题目笔记——1487. 保证文件名唯一
文章目录题目描述题目链接题目难度——中等方法一:哈希表代码/Python代码/C总结题目描述 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同…...
【概念辨析】结构体内存对齐
一、什么是结构体内存对齐 是使得结构体的每个成员能够在及其访问的特定存储单元上的一种方法。 通过这种方法可以使得机器访问效率加快,也可以使得平台一致性变高。 二、结构体对齐的规则 有两组代码: #define _CRT_SECURE_NO_WARNINGS#include <…...
28网站制作/推广策略都有哪些
需求:一开始返回顶部图标是隐藏的,当滚动到指定位置的时候,小图标就会显示出来,,点击图标,会缓动的返回顶部 技术点:window.scrollTo(x,y),浏览器显示区域跳转到指定的坐标 <!DOC…...
招聘类网站建设/山东seo
这个学校的教务系统从大一用到了大三,给予我本人的感受有好有坏。先说说优点吧 1 方便简洁,当时我们大一还是老宿舍的时候网速特别慢,没有有线用电脑来选课查成绩是特别麻烦,这个平台就非常的快捷。 2 每次选体育,公选…...
网站备案 网址/吴江网站制作
2019独角兽企业重金招聘Python工程师标准>>> 有高人把CSS BUG编成了顺口溜了!大家可以看看,可以帮助大家解决很多问题! 一、IE边框若显若无,须注意,定是高度设置已忘记; 二、浮动产生有缘故&am…...
代理注册公司需要什么条件/搜索引擎优化seo优惠
把info类下面所有的a标签链接后天加"#article"。 jQuery(document).ready(function($){ $(.info a).each(function(){ let Ahref $(this).attr("href") "#article"; $(this).attr("href",Ahref); });});转载…...
一个网站怎样做两个后台/软文推广是什么
欢迎加入我们的开源流媒体服务器项目:EasyDarwin,EasyDarwin是在Apple开源流媒体服务器Darwin Streaming Serverv6.0.3)基础上进行开发和维护的免费开源、高效、易扩展的面向企业级的流媒体平台框架,EasyDarwin开始于2013年,遵循 …...
wordpress google翻译插件/我赢网提供的高水平网页设计师
一、 一般测试场景: 1. 所有必填字段都应校验并用星号“*”标注 2. 验证错误提示信息应在正确的位置合理显示 3. 所有的错误信息都应用相同的CSS样式显示(如:红色) 4. 一般性的确认信息应该用错误消息意外的CSS样…...