单元测试
代码生成器可生成 Service 层单元测试模板,帮助新业务在落地时同步补齐基础验证。当前生成引擎在 CodegenEngine 中维护 codegen/java/test/serviceTest.vm,并在 codegenProperties.unitTestEnable 为关闭时移除测试模板和 H2 SQL 模板。
生成内容
| 文件 | 说明 |
|---|---|
ServiceImplTest.java | Service 层增删改查测试骨架 |
sql/h2.sql | 单测使用的 H2 表结构/初始化脚本 |
| 相关 Mock | 根据模板生成必要的 Mapper、Service 或 API Mock 调用 |
推荐验证范围
编写建议
- 先跑生成测试,再补业务断言:生成结果是骨架,不应停留在只覆盖 CRUD happy path。
- 补充异常场景:不存在 ID、唯一性冲突、状态不允许、参数缺失等都应覆盖。
- 注意日期字段:
LocalDate、LocalTime、LocalDateTime的 JSON 规则与前端类型要同步验证。 - 多租户数据隔离:涉及租户字段时,测试要覆盖不同租户不可互相访问。
运行建议
powershell
cd W:\ruoyi-office\ruoyi-office
mvn -pl yudao-module-xxx/yudao-module-xxx-server -am test如果模块依赖较重,可先跑单个测试类,确认通过后再跑模块级测试。
排查清单
| 现象 | 优先检查 |
|---|---|
| H2 建表失败 | 生成的 H2 SQL 是否与 MySQL 语法差异过大 |
| Mock 未生效 | 测试基类、@MockBean、依赖注入是否正确 |
| 时间断言失败 | 日期序列化规则、时区、毫秒精度 |
| 本地通过 CI 失败 | 测试顺序依赖、环境变量、外部服务依赖 |
