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

/单元测试

承接上文

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

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

为什么需要进行单元测试?单元测试有什么作用?

单元测试是软件开发过程中不可或缺的一部分,它对于确保代码质量、提高开发效率、促进团队协作以及降低维护成本等方面都起着至关重要的作用。以下是进行单元测试的几个主要原因:

1.提高代码质量

2.促进快速反馈

3.降低维护成本

4.增强代码的可读性和可维护性

.......

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

下面为一个登录接口进行单元测试

登录业务

@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进行进一步判定异常的具体出错信息。

@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.mrgr.cn/news/20890.html

相关文章:

  • CSS学习8[重点]--盒子模型边框、内外边距设定和外边距合并
  • Proxifier代理配置
  • 人工智能主要是学什么的?
  • 极兔速递小程序任务脚本
  • lazada自养号秘籍:一次成号测评环境系统全解析
  • Gin 自带日志系统:深入理解与自定义
  • laravel command 执行自定义命令 choice 以后使用info 中文乱码
  • [论文笔记] LLM大模型剪枝篇——1、调研
  • 使用twilio完成网上拨打电话和发送短信
  • Juhe Chat AI绘画:你的设计,我的设计,好像不一样~~
  • 2024全国制造业数字化转型论坛南京站圆满落幕,共绘智造新篇章
  • 【2024高教社杯全国大学生数学建模竞赛】B题模型建立求解
  • 美国云服务器租赁和托管服务,哪个更好?
  • Peet‘s Coffee与观测云跨界合作,为伙伴们呈现双重喜悦
  • 运动耳机哪个品牌好?2024五大超神精品运动耳机推荐!
  • CDA数据分析一级考试备考攻略
  • 阿里云飞天洛神云网络子系统“齐天”:超大规模云网络智能运维的“定海神针”
  • 使用 PowerShell 检查 Exchange DAG 状态的详尽指南
  • 51单片机-第十二节-LCD1602液晶显示屏
  • 怎么解决海外服务器远程连接失败的问题?