Spring Boot不同方法相同异常场景的测试策略咨询
需为两个方法分别编写异常场景测试用例
必须给getUserByUsername和changeRole分别编写用户不存在时的UserDoesntExistException测试用例,原因如下:
- 虽然两个方法都依赖
findUserByUsername抛出的异常,但它们是两个独立的业务方法,测试的是各自的行为表现。你需要确认:调用getUserByUsername传入无效用户名时,异常能正确抛出;调用changeRole处理不存在的用户时,同样会触发该异常。 - 单元测试的核心是验证每个方法的契约逻辑,哪怕底层依赖相同,上层方法的职责是独立的。万一后续有人修改其中一个方法的逻辑(比如让
changeRole在用户不存在时返回错误码而非抛异常),单独的测试用例能立刻捕捉到这种变更,不会因为共用测试而遗漏问题。 - 从可读性和维护性来看,每个方法的测试用例单独存在,其他开发者能清晰看到每个方法的异常场景覆盖情况,无需猜测测试与方法的对应关系。
内容的提问来源于stack exchange,提问作者huga721
相关产品推荐
相关产品推荐

