/单元测试

承接上文

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

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

登录业务

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

java 复制代码
@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());
    }

}

测试结果

相关推荐
工业互联网专业11 分钟前
基于springboot+vue的高校社团管理系统的设计与实现
java·vue.js·spring boot·毕业设计·源码·课程设计
九圣残炎13 分钟前
【ElasticSearch】 Java API Client 7.17文档
java·elasticsearch·搜索引擎
m0_748251521 小时前
Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
java·ubuntu·centos
Bro_cat1 小时前
深入浅出JSON:数据交换的轻量级解决方案
java·ajax·java-ee·json
等一场春雨2 小时前
Java设计模式 五 建造者模式 (Builder Pattern)
java·设计模式·建造者模式
hunzi_12 小时前
Java和PHP开发的商城系统区别
java·php
V+zmm101342 小时前
教育培训微信小程序ssm+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
十二同学啊2 小时前
Spring Boot 中的 InitializingBean:Bean 初始化背后的故事
java·spring boot·后端
我劝告了风*2 小时前
NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (二)
java·nio
阿乾之铭2 小时前
NIO 和 Netty 在 Spring Boot 中的集成与使用
java·开发语言·网络