Commit 8a1b01bde5713b32c4dd09b4016846d99d32f2df

Authored by zichun
1 parent f5a0442e

docs(verify:REQ-USR-002): 证据验证

docs/superpowers/reviews/2026-06-01-REQ-USR-002-verify.md 0 → 100644
  1 +# REQ-USR-002 修改用户 — 功能测试证据(verify, round 0)
  2 +
  3 +> 阶段:后端(backend)。spec:`docs/superpowers/specs/2026-06-01-REQ-USR-002.md`。
  4 +> 分支:`module-usr`;执行时工作树干净(`nothing to commit, working tree clean`)。
  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 | 36 通过 / 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: 36, Failures: 0, Errors: 0, Skipped: 0
  38 +构建: BUILD SUCCESS
  39 +```
  40 +
  41 +### 3.1 本次执行的测试类(surefire 实际 Running,9 个类 / 36 用例)
  42 +
  43 +| 测试类 | 用例数 | 失败 | 错误 | 跳过 |
  44 +|---|---|---|---|---|
  45 +| common.response.ResultTest | 2 | 0 | 0 | 0 |
  46 +| common.config.SecurityConfigTest | 1 | 0 | 0 | 0 |
  47 +| common.security.JwtUtilTest | 1 | 0 | 0 | 0 |
  48 +| common.exception.GlobalExceptionHandlerTest | 1 | 0 | 0 | 0 |
  49 +| ErpApplicationTests(上下文加载) | 1 | 0 | 0 | 0 |
  50 +| modules.usr.dto.UpdateUserDTOValidationTest(**REQ-USR-002**) | 5 | 0 | 0 | 0 |
  51 +| modules.usr.dto.CreateUserDTOValidationTest | 3 | 0 | 0 | 0 |
  52 +| modules.usr.controller.UsrUserControllerTest(含 **REQ-USR-002** 续写) | 7 | 0 | 0 | 0 |
  53 +| modules.usr.service.UsrUserServiceImplTest(含 **REQ-USR-002** 续写) | 15 | 0 | 0 | 0 |
  54 +| **合计** | **36** | **0** | **0** | **0** |
  55 +
  56 +`failed_list`: 空(无任何失败用例)。
  57 +
  58 +### 3.2 关于 REQ-USR-002 的覆盖映射(与 TDD 摘要对照)
  59 +
  60 +TDD 摘要列出的 REQ-USR-002 新增测试:UpdateUserDTOValidationTest(5)、UsrUserServiceImplTest 续写(T2 3 + T3 5)、UsrUserControllerTest 续写(4)、UsrUserUpdateIT(6)。其中前三类(DTO 校验 + Service 部分更新/存在性/关联职员/权限组全量覆盖 + Controller 管理员前置/路由)均在本次 `mvn test` 中执行并全绿。
  61 +
  62 +---
  63 +
  64 +## 4. 重要观察:集成测试 `UsrUserUpdateIT` 未被锁定命令执行(不阻塞,记录待 review 知悉)
  65 +
  66 +- 仓库存在 `backend/src/test/java/com/xly/erp/modules/usr/UsrUserUpdateIT.java`(及 `UsrUserCreateIT.java`),TDD 摘要称其"连测试库走真实安全链"。
  67 +- 但 **本次 `mvn test` 的 surefire 仅 Running 9 个 `*Test` 类**,IT 类未出现在 `Running com.*` 列表,最终聚合 `Results:` 仅 36 用例。
  68 +- 原因:`backend/pom.xml` 仅声明 `spring-boot-maven-plugin` + `maven-checkstyle-plugin`,**无 surefire `<includes>` 覆盖、无 maven-failsafe-plugin**。Surefire 默认包含 `**/*Test.java` / `**/Tests*` 等而**默认排除 `**/*IT.java`**;docs/04 § 零 后端 `e2e = 无`,亦无 `verify`/failsafe 锁定命令。
  69 +- 因此 `*IT` 类在项目当前命令集下**不被任何标准闸门执行**;`target/surefire-reports/` 下两个 IT 报告(UsrUserUpdateIT 6 绿 @14:03:55、UsrUserCreateIT 5 绿 @13:43:34)为**早于本次运行(14:05:5x)的历史残留**,非本次产物。
  70 +- **判定影响**:本 verify 严格按 docs/04 § 零 锁定的后端 `lint` + `unit` 两条命令取证,二者均 exit 0、零失败,**故判定 PASS、不阻塞**。IT 未纳入标准管线属测试装配现状(非本 REQ 引入的回归、亦非红色失败),如需在 CI 中固化真实安全链回归,建议后续在 pom 引入 maven-failsafe-plugin 并把 `mvn verify` 锁进 docs/04 § 零,但这超出本 verify 作用域,留给 review/后续治理。
  71 +
  72 +---
  73 +
  74 +## 5. 自主决策(decisions)
  75 +
  76 +| # | 问题 | 选择 | 依据 | 置信度 |
  77 +|---|---|---|---|---|
  78 +| V1 | 工作流要求"派子会话执行测试",但当前环境无可派发隔离子会话并回传结构化 JSON 的工具(仅有待办类 Task* 工具) | 由本 verify 子代理直接执行 docs/04 § 零 锁定的后端标准命令并采集结构化结果(command/exit_code/passed/failed/failed_list/excerpt) | 无 sub-session-dispatch 工具可用;硬约束要求"优先自主决策继续,不要停下";标准命令 + 退出码 + surefire 聚合即等价证据,不污染源码 | high |
  79 +| V2 | unit 闸门应取哪条命令 | `mvn -B test`(= docs/04 § 零 后端 `unit`,去掉 `-q` 仅为采集聚合行,行为等价) | docs/04 § 零 明确 backend unit = `mvn -q -B test`;`-q` 与否不改变测试执行集与退出码 | high |
  80 +| V3 | `*IT` 集成测试未被 `mvn test` 执行,是否判失败/halt | 不判失败:以 docs/04 § 零 锁定的 lint+unit 两闸门取证,均绿则 PASS;IT 未纳入标准命令的现状作为观察记录入证据 § 4,供 review 知悉 | 项目锁定命令集无 failsafe / `verify` / e2e;surefire 默认排除 `*IT`;红色失败不存在(IT 历史报告亦全绿),不构成本 REQ 回归 | medium |
  81 +
  82 +---
  83 +
  84 +## 6. 结构化结果摘要(供上层 review 引用)
  85 +
  86 +```json
  87 +{
  88 + "lint": { "command": "mvn -q -B checkstyle:check", "exit_code": 0, "violations": 0 },
  89 + "unit": { "command": "mvn -B test", "exit_code": 0, "passed": 36, "failed": 0, "errors": 0, "skipped": 0, "failed_list": [] },
  90 + "verdict": "PASS",
  91 + "note": "UsrUserUpdateIT/*IT 未被标准命令执行(pom 无 failsafe,surefire 默认排除 *IT);按 docs/04 §零 锁定的 lint+unit 取证全绿"
  92 +}
  93 +```