/单元测试

ops/2024/9/18 20:58:26/ 标签: 单元测试, log4j, java

承接上文

统一异常处理,封装结果-CSDN博客

********************************************

登录业务

java">@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {@Resourceprivate JwtUtils jwtUtils;@Overridepublic String login(Employee employee) {//2.构造条件LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>();wrapper.eq(Employee::getUsername,employee.getUsername()).or().eq(Employee::getPhone,employee.getPhone());//1. 根据用户名或者密码查询用户信息Employee employeeInDb = this.getOne(wrapper);//3.判断是否查询到用户if(employeeInDb == null){throw new BusinessException(ResponseEnum.USER_INVALID);}//4.比较密码if(!BCrypt.checkpw(employee.getPassword(),employeeInDb.getPassword())){throw new BusinessException(ResponseEnum.PASSWORD_INVALID);}//5.签发tokenString token = jwtUtils.createJwt(employeeInDb.getId(),null,60*60*24*7L,"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");return token;}
}

现要对这个登录业务进行测试,要测试的情况有 登录成功,账号或电话输入错误,密码输入错误三种情况

异常状态码

单元测试

通过断言对失败的情况进行判定,通过Assertions.assertEquals进行进一步判定异常的具体出错信息。

java">@SpringBootTest
public class EmployeeControllerTests {@Resourceprivate EmployeeController employeeController;@Test//成功的情况public void testLoginSuccess() {Employee employee = new Employee();employee.setUsername("admin");employee.setPassword("123456");}@Testpublic void testLoginPasswordError() {//断言BusinessException e = Assertions.assertThrows(BusinessException.class, () -> {Employee employee = new Employee();employee.setUsername("admin");employee.setPassword("1234567");employeeController.login(employee);});//进一步断定更详细的异常类型Assertions.assertEquals("密码错误",e.getResponse().getMessage());}@Testpublic void testLoginUsernameError() {BusinessException e = Assertions.assertThrows(BusinessException.class, () -> {Employee employee = new Employee();employee.setUsername("adminaa");employee.setPassword("123456");employeeController.login(employee);});Assertions.assertEquals("用户不存在",e.getResponse().getMessage());}}

测试结果


http://www.ppmy.cn/ops/104856.html

相关文章

前端代码注释风格 - CSS篇

本文基于《阿里巴巴CSS编程规约》、stylelint rules进行编写&#xff0c;涉及预编译语言&#xff08;Sass、Less&#xff09;的编码风格和最佳实践。 1.1 编码风格 空格的使用 选择器和{之间保留一个空格。.selector-disabled { 在使用逗号分隔的属性中&#xff0c;逗号后保…

vue3实现文件夹上传及存在问题解决

需求是使用 VUE3 实现上传文件夹&#xff0c;其功能主要依赖于 <input> 标签的属性 webkitdirectory &#xff1a; <inputref"uploadFolderRef"type"file"style"display: none"change"submitUpload"webkitdirectorymultiple…

edge跟谷歌浏览器配置浏览器可跨域

在D盘下创建 vscode\test 文件夹 D:\xxxx\vscode\test 直接复制edge或者谷歌的一个快捷方式 名字就叫可跨域 可以随便取 右键选中目标浏览器点击属性 配置edge的目标路径 "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --disable-web-security …

【时间盒子】-【3.新建项目】创建元服务工程,选择默认模板Empty Ability

一、新建项目 1、打开DevEco Studio >>文件>>新建>>新建项目&#xff0c;选择元服务 Atomic Service>>默认模板Empty Ability。 2、设置元服务的工程名称、Bundle name等&#xff0c;模型选Stage&#xff0c;语言是ArkTS&#xff0c;支持的设备类型只…

爬虫使用代理IP返回405:原因及解决方法

在进行网络爬虫时&#xff0c;使用代理IP是常见的做法&#xff0c;可以有效地绕过IP限制和反爬虫机制。然而&#xff0c;有时你可能会遇到HTTP状态码405&#xff08;Method Not Allowed&#xff09;&#xff0c;这意味着请求方法不被服务器允许。本文将详细探讨爬虫使用代理IP返…

学习周报-2024.8.31

目录 摘要 Abstract 创新点总结 模型数学原理 实验设置 一、验证实验 二、对比实验 摘要 这周重新梳理出论文的三个创新点&#xff0c;对所提出方法进行数学原理验证&#xff0c;证明其可行性。重新设置了实验部分&#xff0c;分为验证实验和对比实验&#xff0c;一共四…

【js】箭头函数和普通函数在this指向的区别

在JavaScript中&#xff0c;箭头函数&#xff08;Arrow Functions&#xff09;和普通函数&#xff08;Function Declarations/Expressions&#xff09;在this的指向上有显著的不同&#xff1a; 普通函数&#xff1a; 函数定义时&#xff1a;this的值在函数被调用时才会确定&a…

【网络安全】Instagram 和 Meta 2FA 绕过漏洞

未经许可,不得转载。 文章目录 漏洞概述技术细节Meta 2FA 绕过步骤Instagram 2FA 绕过步骤总结漏洞概述 该漏洞允许攻击者在具有受害者Facabook账户权限的情况下,绕过 Meta 的双重身份验证 (2FA) 机制,实现账户接管;并且也能够绕过 Instagram 的双重身份验证 (2FA) 机制,…

STM32单片机和ARM有什么区别?

ARM单片机实际上是基于ARM处理器架构的单片微型计算机。STM32是意法半导体&#xff08;STMicroelectronics&#xff0c;简称ST&#xff09;推出的基于ARM Cortex-M内核的32位闪存微控制器系列。 ARM单片机&#xff1a; ARM单片机采用的是ARM处理器架构&#xff0c;这一架构具…

最新软件测试面试题,常见面试题及答案汇总,不怕拿不到offer

面试题包括以下十六个模块&#xff1a;软件测试基础&#xff0c;liunx基础&#xff0c;MySQL基础&#xff0c;web测试&#xff0c;APP测试&#xff0c;性能测试&#xff0c;selenium&#xff0c;Python基础&#xff0c;接口测试&#xff0c;lordrunner&#xff0c;计算机网络&a…

理解torch.argmax() ,我是错误的

torch.max() import torch# 定义张量 b b torch.tensor([[1, 3, 5, 7],[2, 4, 6, 8],[11, 12, 13, 17]])# 使用 torch.max() 找到最大值 max_indices torch.max(b, dim0)print(max_indices) 输出&#xff1a;>>> print(max_indices) torch.return_types.max( valu…

LLC电路全桥和半桥工作原理详解

一、LLC电路介绍 LLC 变换器由 4 个模块组成&#xff1a;电源开关、谐振腔、变压器和二极管整流器。MOSFET 功率开关首先将输入的直流电压转换为高频方波&#xff1b;随后方波进入谐振腔&#xff0c;由谐振腔消除方波的谐波并输出基频的正弦波&#xff1b;正弦波再通过高频变压…

机器学习:opencv--图像边缘检测

目录 前言 一、图像边缘检测 1.边缘检测 2.边缘检测的方法 二、Sobel算子 1.Sobel算子 2.计算 3.代码实现 4.代码步骤解析 1.导入图片 2.处理x轴和y轴的边缘并相加 三、Scharr算子 1.Scharr算子 2.计算 3.代码实现 四、Laplacian算子 1.Lapla…

Python精选200Tips:11-20

Not just concise, but also simple. 011 map012 lambda013 filter014 enumerate015 items016 列表推导式017 f-string018 sorted()019 join()020 zip运行系统:macOS Sonoma 14.6.1 Python编译器:PyCharm 2024.1.4 (Community Edition) Python版本:3.12 往期链接: 1-5 6-1…

《从C/C++到Java入门指南》- 28.接口

接口 对比抽象类 抽象类我们知道是一个类&#xff0c;但是里面的方法都是空的&#xff0c;需要由抽象类的子类继承后来实现&#xff0c;可以说抽象类定义了一种类型类的规范。 接口也是一样的东西&#xff0c;接口也是一种抽象的载体&#xff0c;只定义方法名&#xff0c;相…

学习日志30

论文名称&#xff1a;IBM Q Experience as a versatile experimental testbed for simulating open quantum systems 论文内容&#xff1a; 这篇论文详细探讨了IBM Q Experience作为一个实验平台&#xff0c;用于模拟和研究开放量子系统的多种模型和现象。开放量子系统是指那些…

培训第三十六天(docker应用,mysql容器应用,容器核对时间,容器之间的依赖 域名,文件联合系统,制作基础镜像,commit制作镜像)

上午 容器就是在镜像上添加了一个可写层 # 从镜像库中下载mysql镜像&#xff0c;mysql镜像是在基础镜像上加很多层制成的[rootdocker ~]# docker pull mysqlUsing default tag: latestlatest: Pulling from library/mysql6e839ac3722d: Pull complete ad912193ad5f: Pull comp…

驭势科技研究成果入选学术顶会IROS 2024

近日&#xff0c;驭势科技团队关于自动驾驶车辆定位算法的最新研究成果《LiDAR-based HD Map Localization using Semantic Generalized ICP with Road Marking Detection》&#xff0c;创造性地解决了基于LiDAR的实时路标检测和高精地图配准所带来的挑战&#xff0c;成功入选国…

华为 2024 届校园招聘-硬件通⽤/单板开发——第一套(部分题目分享,完整版带答案,共十套)

华为 2024 届校园招聘-硬件通⽤/单板开发——第一套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共12套&#xff09; 1、对于 RC 定时电路&#xff0c;电容应选取&#xf…

【QNX+Android虚拟化方案】108 - emac0-phy 与 emac1-switch 双网卡兼容 方案实现

【QNX+Android虚拟化方案】108 - emac0-phy 与 emac1-switch 双网卡兼容 方案实现 基于原生纯净代码,自学总结 纯技术分享,不会也不敢涉项目、不泄密、不传播代码文档!!! 本文禁止转载分享 !!! 汇总链接:《【QNX+Android虚拟化方案】00 - 系列文章链接汇总》 本文链接…