test-report.md 5.0 KB

测试报告 - 角色权限测试覆盖增强 + PdfParseService 测试

日期: 2026-06-24 分支: cfclub 最新提交: 0e6ea3b → 本次 9e321c3(角色测试增强+报告已推送)→ 本次变更待提交


1. 执行概要

项目 状态
代码同步 (git pull --rebase) ✅ 完成
设计-代码匹配度分析 ✅ 完成
缺失测试用例补充 ✅ 完成
编译验证 (BUILD SUCCESS) ✅ 完成
PdfParseServiceTest (10/10 通过) ✅ 完成
测试报告推送远程 🔄 进行中

2. 远程变更探查(上次同步)

git pull --rebase 拉取的远程新提交:

0e6ea3b feat: 营养推荐相关实体和mappers (#178)
dd002f3 fix: Login.vue 品牌升级 (#177)
PdfParseService.java 新建(食物解析服务)
FamilyMemberVO.java 重构(字段变更:memberType→capabilityRole,移除danLevel)
schema.sql 新增表

后端新增 PdfParseService.java + FamilyMemberVO.java 重构 → 触发测试覆盖需求。


3. 本次新增变更

3.1 UserService.java 编译错误修复

文件: cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java:672

问题: FamilyMemberVO 重构后无 danLevel 字段,调用 vo.setDanLevel() 导致编译失败。

修复: 删除 vo.setDanLevel(c.getDanLevel()) 行。

3.2 PdfParseServiceTest(新建)

文件: cfc-backend/src/test/java/com/etotem/cfc/service/PdfParseServiceTest.java

背景: PdfParseService.parseText() 解析 PDF 文本为结构化报告,文本格式为"关键词\n值"逐行格式。

测试方法 测试内容 结果
parseText_emptyText_returnsEmptyResult 空文本返回空对象 ✅
parseText_withAbstractScore_parsesCorrectly 摘要分数:健康总分/菌群健康 ✅
parseText_withReportInfo_parsesCorrectly 报告信息:编号/日期/姓名/肠道年龄/肠型 ✅
parseText_withDiseaseRisk_parsesCorrectly 疾病风险:慢病控制/营养均衡 ✅
parseText_withGutMicrobiome_parsesCorrectly 肠道菌群:平衡/多样性/有益菌/有害菌/核心菌属 ✅
parseText_withMetricsScore_parsesCorrectly 指标评分:各维度 Integer ✅
parseText_withIngredientSuitability_parsesCorrectly 食材适宜度 ✅
parseText_withAllSections_combinesResults 多 section 合并 ✅
parseText_withSpecialCharacters_handlesGracefully 特殊字符(数字/长名称/边界值) ✅

10/10 测试通过,BUILD SUCCESS

注意:PdfParseService 无 Spring 依赖,直接 new PdfParseService() 实例化,不触发 MySQL 连接,不受连接数限制。


4. 之前完成的测试覆盖

4.1 WishControllerTest(前期已完成)

测试方法 测试角色 预期结果
createWish_ByTeacher teacher 成功
createWish_ByAdmin admin 成功

4.2 FamilyControllerTest(前期已完成)

测试方法 测试角色 预期结果
guideBindFamily_ChildDenied child code=500
guideBindFamily_AdminDenied admin code=500

4.3 GuideFamilyTaskControllerTest(前期已完成)

7 个 teacher-only 方法 × 3 种非 teacher 角色 (parent/child/admin) = 21 条角色拒绝断言。

4.4 TestRoles 工具类(前期已完成)

ROLE_PARENT / ROLE_CHILD / ROLE_TEACHER / ROLE_ADMIN + assertSuccess() / assertRoleDenied()


5. 编译验证

mvn test-compile
[INFO] BUILD SUCCESS
[INFO] Compiling 37 source files  (新增 PdfParseServiceTest)

6. 测试执行限制

MySQL 连接数限制:HikariCP 13 个连接限额,13 个测试类同时运行会阻塞。

现状:

  • 编译验证:✅ 通过
  • PdfParseServiceTest:✅ 10/10 通过(无 MySQL 依赖)
  • 完整测试运行:⚠️ MySQL Too many connections 阻塞(基础设施限制)

7. 待优化项

优先级 项目 说明
🟡 中 vendorType=planner 迁移 代码仍用 role=teacher
🟢 低 GuideRecordController 测试 有 @RequestAttribute("role") 但无测试类

8. 文件变更清单(本次)

文件 操作 说明
cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java 修改 删除 setDanLevel 编译错误
cfc-backend/src/test/java/com/etotem/cfc/service/PdfParseServiceTest.java 新增 10 个测试方法
cfc-backend/src/test/java/com/etotem/cfc/controller/WishControllerTest.java 修改 新增 teacher/admin 测试(前期)
cfc-backend/src/test/java/com/etotem/cfc/controller/FamilyControllerTest.java 修改 新增 child/admin 拒绝测试(前期)
cfc-backend/src/test/java/com/etotem/cfc/common/TestRoles.java 新增 角色常量(前期)
cfc-backend/src/test/java/com/etotem/cfc/controller/GuideFamilyTaskControllerTest.java 已存在 角色拒绝测试(前期)