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

/单元测试

承接上文

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

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

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

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

1.提高代码质量

2.促进快速反馈

3.降低维护成本

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

.......

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

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

登录业务

@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {

    @Resource
    private JwtUtils jwtUtils;
    @Override
    public 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.签发token

        String token = jwtUtils.createJwt(
                employeeInDb.getId(),
                null,
                60*60*24*7L,
                "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
        );
        return token;
    }
}

现要对这个登录业务进行测试,要测试的情况有 登录成功账号或电话输入错误密码输入错误三种情况(当然实际上肯定不止这三种情况)

异常状态码

单元测试

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

@SpringBootTest
public class EmployeeControllerTests {
    @Resource
    private EmployeeController employeeController;

    @Test
    //成功的情况
    public void testLoginSuccess() {
        Employee employee = new Employee();
        employee.setUsername("admin");
        employee.setPassword("123456");
    }

    @Test
    public 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());
    }

    @Test
    public 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.kler.cn/a/292429.html

相关文章:

  • DNS批量解析管理软件有什么用
  • 服务器上安装Orcale数据库以及PL SQL工具(中文)
  • 算力100问☞第5问:算力如何衡量?
  • opc da 服务器数据 转 IEC61850项目案例
  • SpringBoot实战(三十一)集成iText5,实现RSA签署PDF
  • 深入探索离散 Hopfield 神经网络
  • 前端Worker 的应用
  • 3. GIS后端工程师岗位职责、技术要求和常见面试题
  • 羽毛球运动员的运动姿势-标准动作识别判断
  • 无人机遥控器的材料组成!!!
  • 06_TensorFlow2数学计算大揭秘:让AI也学会‘加减乘除’,笑料不断,干货满满!
  • U盘未初始化困境与数据拯救
  • 骨传导耳机哪个牌子好用?精选五款黄金畅销骨传导机型测评
  • 1、.Net UI框架:Avalonia UI - .Net宣传系列文章
  • 为基于物联网的监测应用构建边缘云连续体架构
  • 学习node.js十三,文件的上传于下载
  • C++:STL简介
  • GFP-GAN容器构建说明
  • 数据分析面试常见50个问题及解答要点(五)
  • Curl命令详解
  • 【全志H616】【开源】 ARM-Linux 智能分拣项目:阿里云、网络编程、图像识别
  • SQL server数据库实现远程跨服务器定时同步传输数据
  • 举例说明,在python中怎样使用哈希算法?
  • vue3+ts封装类似于微信消息的组件
  • 车载测试协议:ISO-14229、ISO-15765、ISO-11898、ISO-26262【车企项目实操学习】②
  • 贪吃蛇的小游戏--用C语言实现