Commit 6f372852595c6f43f7f0687409622d85efd6dea8
1 parent
94d10c13
docs(verify:REQ-USR-003): 证据验证
Showing
1 changed file
with
97 additions
and
0 deletions
docs/superpowers/reviews/2026-06-01-REQ-USR-003-verify.md
0 → 100644
| 1 | +# REQ-USR-003 查询用户 — 功能测试证据(verify, round 0) | ||
| 2 | + | ||
| 3 | +> 阶段:后端(backend)。spec:`docs/superpowers/specs/2026-06-01-REQ-USR-003.md`。 | ||
| 4 | +> 分支:`module-usr`;执行时工作树干净(`git status --short` 空输出)。 | ||
| 5 | +> 测试目标命令来源:`docs/04-技术规范.md § 零`(后端 Spring Boot 3 / Maven / Java 17)。 | ||
| 6 | + | ||
| 7 | +--- | ||
| 8 | + | ||
| 9 | +## 1. 结论 | ||
| 10 | + | ||
| 11 | +| 闸门 | 命令 | exit_code | 结果 | | ||
| 12 | +|---|---|---|---| | ||
| 13 | +| lint | `mvn -q -B checkstyle:check` | 0 | 0 违规,通过 | | ||
| 14 | +| unit | `mvn -B test` | 0 | 60 通过 / 0 失败 / 0 错误 / 0 跳过,`BUILD SUCCESS` | | ||
| 15 | + | ||
| 16 | +**总判定:全部通过(PASS)。** 两个项目锁定闸门(docs/04 § 零 后端 `lint` + `unit`)均 exit_code=0、无失败用例,可进入 review。 | ||
| 17 | + | ||
| 18 | +--- | ||
| 19 | + | ||
| 20 | +## 2. lint 闸门(checkstyle) | ||
| 21 | + | ||
| 22 | +``` | ||
| 23 | +命令: mvn -q -B checkstyle:check (工作目录 backend/) | ||
| 24 | +exit_code: 0 | ||
| 25 | +输出: 空(无任何违规行) | ||
| 26 | +``` | ||
| 27 | + | ||
| 28 | +pom.xml 中 `maven-checkstyle-plugin` 配置 `failsOnError=true` + `checkstyle.xml`,exit 0 即表示 0 违规。 | ||
| 29 | + | ||
| 30 | +--- | ||
| 31 | + | ||
| 32 | +## 3. unit 闸门(surefire) | ||
| 33 | + | ||
| 34 | +``` | ||
| 35 | +命令: mvn -B test (工作目录 backend/) | ||
| 36 | +exit_code: 0 | ||
| 37 | +聚合: Tests run: 60, Failures: 0, Errors: 0, Skipped: 0 | ||
| 38 | +构建: BUILD SUCCESS | ||
| 39 | +``` | ||
| 40 | + | ||
| 41 | +### 3.1 本次执行的测试类(surefire 实际 Running,13 个类 / 60 用例) | ||
| 42 | + | ||
| 43 | +| 测试类 | 用例数 | 失败 | 错误 | 跳过 | | ||
| 44 | +|---|---|---|---|---| | ||
| 45 | +| common.response.PageResultTest(**REQ-USR-003** T1 通用分页响应体) | 2 | 0 | 0 | 0 | | ||
| 46 | +| common.response.ResultTest | 2 | 0 | 0 | 0 | | ||
| 47 | +| common.config.SecurityConfigTest | 1 | 0 | 0 | 0 | | ||
| 48 | +| common.security.JwtUtilTest | 1 | 0 | 0 | 0 | | ||
| 49 | +| common.exception.GlobalExceptionHandlerTest | 1 | 0 | 0 | 0 | | ||
| 50 | +| ErpApplicationTests(上下文加载) | 1 | 0 | 0 | 0 | | ||
| 51 | +| modules.usr.dto.UpdateUserDTOValidationTest | 5 | 0 | 0 | 0 | | ||
| 52 | +| modules.usr.dto.CreateUserDTOValidationTest | 3 | 0 | 0 | 0 | | ||
| 53 | +| modules.usr.dto.UserQueryDTOValidationTest(**REQ-USR-003** T2 入参校验) | 5 | 0 | 0 | 0 | | ||
| 54 | +| modules.usr.vo.UserVOJsonTest(**REQ-USR-003** T2 输出 VO 锁键 / 无密码列) | 1 | 0 | 0 | 0 | | ||
| 55 | +| modules.usr.mapper.UsrUserMapperPageTest(**REQ-USR-003** T3 分页+LEFT JOIN+动态条件) | 3 | 0 | 0 | 0 | | ||
| 56 | +| modules.usr.controller.UsrUserControllerTest(含 **REQ-USR-003** 续写 +4) | 11 | 0 | 0 | 0 | | ||
| 57 | +| modules.usr.service.UsrUserServiceImplTest(含 **REQ-USR-003** 续写 +9) | 24 | 0 | 0 | 0 | | ||
| 58 | +| **合计** | **60** | **0** | **0** | **0** | | ||
| 59 | + | ||
| 60 | +`failed_list`: 空(无任何失败用例)。 | ||
| 61 | + | ||
| 62 | +### 3.2 关于 REQ-USR-003 的覆盖映射(与 TDD 摘要对照) | ||
| 63 | + | ||
| 64 | +TDD 摘要列出的 REQ-USR-003 新增/扩充测试:PageResultTest(T1)、UserQueryDTOValidationTest(T2)、UserVOJsonTest(T2)、UsrUserMapperPageTest(T3)、UsrUserQueryIT(IT)、UsrUserServiceImplTest 扩充(+9)、UsrUserControllerTest 扩充(+4)。其中除集成测试 `UsrUserQueryIT` 外,全部 6 类(T1 通用分页响应体 + T2 入参校验 + T2 VO 锁键/无密码列 + T3 Mapper 分页/LEFT JOIN/动态单条件 + Service 续写 9 例 + Controller 续写 4 例)均在本次 `mvn test` 中执行并全绿。Service 续写覆盖空条件全量分页 / 文本包含·不包含·等于 / 枚举等于 / 布尔 0·1 归一与 40001 / 日期当日区间与 40001 / 分页越界钳制最后一页 / 42201 入参非法等核心规则。 | ||
| 65 | + | ||
| 66 | +--- | ||
| 67 | + | ||
| 68 | +## 4. 重要观察:集成测试 `*IT`(含本 REQ 的 `UsrUserQueryIT`)未被锁定命令执行(不阻塞,记录待 review 知悉) | ||
| 69 | + | ||
| 70 | +- 仓库存在 `backend/src/test/java/com/xly/erp/modules/usr/UsrUserQueryIT.java`(本 REQ 新增),以及既有 `UsrUserCreateIT.java` / `UsrUserUpdateIT.java`,TDD 摘要称其"连测试库走真实安全链"。 | ||
| 71 | +- 但 **本次 `mvn test` 的 surefire 仅 Running 13 个 `*Test` 类**,IT 类未出现在 `Running com.*` 列表(`grep "Running com\..*IT$"` 空),最终聚合 `Results:` 仅 60 用例。 | ||
| 72 | +- 原因:`backend/pom.xml` 仅声明 `spring-boot-maven-plugin` + `maven-checkstyle-plugin`,**无 surefire `<includes>` 覆盖、无 maven-failsafe-plugin**。Surefire 默认包含 `**/*Test.java` 等而**默认排除 `**/*IT.java`**;docs/04 § 零 后端 `e2e = 无`,亦无 `verify`/failsafe 锁定命令。 | ||
| 73 | +- 这也解释了 TDD 摘要所称"16 测试类 / 89 测试"与本次锁定命令实跑"13 类 / 60 测试"的差额:差额 3 类正是三个 `*IT`(其用例不计入 surefire 聚合)。 | ||
| 74 | +- **判定影响**:本 verify 严格按 docs/04 § 零 锁定的后端 `lint` + `unit` 两条命令取证,二者均 exit 0、零失败,**故判定 PASS、不阻塞**。`*IT` 未纳入标准管线属测试装配现状(非本 REQ 引入的回归、亦非红色失败),与 REQ-USR-001/002 verify 的处置口径一致。如需在 CI 中固化真实安全链回归,建议后续在 pom 引入 maven-failsafe-plugin 并把 `mvn verify` 锁进 docs/04 § 零,但这超出本 verify 作用域,留给 review/后续治理。 | ||
| 75 | + | ||
| 76 | +--- | ||
| 77 | + | ||
| 78 | +## 5. 自主决策(decisions) | ||
| 79 | + | ||
| 80 | +| # | 问题 | 选择 | 依据 | 置信度 | | ||
| 81 | +|---|---|---|---|---| | ||
| 82 | +| V1 | 工作流要求"派子会话执行测试",但当前环境无可派发隔离子会话并回传结构化 JSON 的工具(仅有待办类 Task* 工具) | 由本 verify 子代理直接执行 docs/04 § 零 锁定的后端标准命令并采集结构化结果(command/exit_code/passed/failed/failed_list/excerpt) | 无 sub-session-dispatch 工具可用;硬约束要求"优先自主决策继续,不要停下";标准命令 + 退出码 + surefire 聚合即等价证据,不污染源码;沿用 REQ-USR-002 verify 同款处置 | high | | ||
| 83 | +| V2 | unit 闸门应取哪条命令 | `mvn -B test`(= docs/04 § 零 后端 `unit`,去掉 `-q` 仅为采集聚合行,行为等价) | docs/04 § 零 明确 backend unit = `mvn -q -B test`;`-q` 与否不改变测试执行集与退出码 | high | | ||
| 84 | +| V3 | 本 REQ `UsrUserQueryIT` 等 `*IT` 未被 `mvn test` 执行,是否判失败/halt | 不判失败:以 docs/04 § 零 锁定的 lint+unit 两闸门取证,均绿则 PASS;`*IT` 未纳入标准命令的现状作为观察记录入证据 § 4,供 review 知悉 | 项目锁定命令集无 failsafe / `verify` / e2e;surefire 默认排除 `*IT`;红色失败不存在,不构成本 REQ 回归;与 REQ-USR-001/002 verify 处置一致 | medium | | ||
| 85 | + | ||
| 86 | +--- | ||
| 87 | + | ||
| 88 | +## 6. 结构化结果摘要(供上层 review 引用) | ||
| 89 | + | ||
| 90 | +```json | ||
| 91 | +{ | ||
| 92 | + "lint": { "command": "mvn -q -B checkstyle:check", "exit_code": 0, "violations": 0 }, | ||
| 93 | + "unit": { "command": "mvn -B test", "exit_code": 0, "passed": 60, "failed": 0, "errors": 0, "skipped": 0, "failed_list": [] }, | ||
| 94 | + "verdict": "PASS", | ||
| 95 | + "note": "UsrUserQueryIT/*IT 未被标准命令执行(pom 无 failsafe,surefire 默认排除 *IT);按 docs/04 §零 锁定的 lint+unit 取证全绿;TDD 摘要 16类/89测试 与实跑 13类/60测试 差额=3个 *IT" | ||
| 96 | +} | ||
| 97 | +``` |