SuperAPI AI 工具集

unit-test-service-layer

测试与质量

查看项目

更新于 10-15 21:52

技能介绍

用途:为 @Service 类的业务逻辑编写基于 Mockito 的单元测试,模拟仓库与外部客户端依赖,验证服务与协作者的交互,覆盖异常与边界场景,测试快速且隔离,不依赖数据库或 API 调用。

主要能力:使用 @ExtendWith(MockitoExtension.class) 启用 Mockito 注解;用 @Mock 声明依赖、@InjectMocks 注入被测服务;以 when().thenReturn() 配置桩返回值,when().thenThrow() 模拟异常;用 AssertJ 断言返回值,用 verify() 验证方法调用;支持多依赖、参数捕获器、异步服务与 InOrder 验证等模式(详见 references/examples.md)。

使用方式:按 Arrange-Act-Assert 流程编写测试,先创建测试数据并配置桩,再执行服务方法,最后断言返回值并验证交互;运行 mvn test 或 gradle test 执行测试,用 mvn test jacoco:report 查看覆盖率。

适用场景:测试 @Service 类中的业务逻辑、模拟仓库和外部客户端依赖、验证服务与模拟协作者的交互、测试服务中的错误处理与边界情况。

限制与注意:不要模拟值对象或 DTO,应创建真实实例;避免模拟过多依赖,协作者过多时考虑重构;测试必须相互独立,不依赖执行顺序;谨慎使用 @Spy,部分模拟较难理解和维护;不要直接测试私有方法,应通过公共方法行为测试;参数匹配器(any()、eq())不能与同一桩中的实际值混用;避免过度验证,只验证对测试场景重要的交互。