usr-test-gate-r1.md 3.22 KB

usr 模块硬测试闸 —— attempt r1(GREEN)

  • 模块: usr(用户/认证)
  • 阶段: backend test-gate(合并默认分支前的硬测试闸)
  • attempt: r1
  • 判定: ✅ GREEN
  • 执行时间: 2026-06-01 15:56–15:57 CST
  • 执行命令: node scripts/test.mjs(内部 ensureJava17() 固定 JDK17 后逐级执行 setup-db → build → lint → unit+integration → e2e)
  • 功能分支 HEAD: 282a524chore(usr): 移除 JDK25 工具链导致的过期红色 test-gate 证据 r1-r5

背景:根因与修复

历史上 usr 模块在 JDK25 默认工具链下连续 5 次 RED(旧 r1–r5 证据),根因为:

  • Maven Surefire fork 出的测试 JVM 沿用开发机默认 JDK(Java 25,class file 版本 69)。
  • Mockito 自带的 Byte Buddy 不支持过新的 class file 版本(仅到 Java 22 = 66),导致 UsrAuthServiceImplTest.setUp 阶段对 com.xly.erp.common.security.JwtUtil 整片 Mockito cannot mock this class 报 error。
  • 旧 r5 终态:Tests run: 88, Failures: 0, Errors: 9, Skipped: 0(9 个 error 全部来自 Mockito mock 失败)。

修复(已在功能分支落地):

  • dbc3454 chore(infra): test.mjs 固定后端测试 JDK 为 Java 17 —— scripts/test.mjs 新增 ensureJava17(),在跑后端 Maven 前把进程树 JAVA_HOME/PATH 固定到 Java 17 运行时(不改全局 profile)。
  • 282a524 chore(usr): 移除 JDK25 工具链导致的过期红色 test-gate 证据 r1-r5 —— 移除过期红色证据,避免污染报告前置判定。

本次 r1 是修复落地后在 JDK17 工具链下的首次重跑。

工具链确认

  • /usr/libexec/java_home -v 17/opt/homebrew/Cellar/openjdk@17/17.0.19/libexec/openjdk.jdk/Contents/Home
  • ensureJava17() 日志:[test.mjs] 固定 JAVA_HOME=Java 17 → /opt/homebrew/Cellar/openjdk@17/17.0.19/libexec/openjdk.jdk/Contents/Home
  • Spring Boot 测试启动日志确认运行时:Starting ErpApplicationTests using Java 17.0.19
  • Maven:Apache Maven 3.9.15 / Java version 17.0.19

5 级闸门执行结果

阶段 命令 结果
1/5 setup test db node scripts/setup-test-db.mjs(DROP+CREATE xlyweberp_vibe_erp_test,schema 由 Flyway 启动时 apply) ✅ done
2/5 build mvn -q -B -DskipTests package ✅ pass
3/5 lint mvn -q -B checkstyle:check ✅ pass
4/5 unit + integration mvn -q -B test ✅ pass
5/5 e2e 后端无 e2e(前端阶段单独执行) ✅ skip(按 docs/04 §零约定)

退出码:0;test.mjs 终态输出:[test.mjs] GREEN

测试统计(surefire-reports 汇总)

  • 总计Tests run: 125, Failures: 0, Errors: 0, Skipped: 0(25 个测试类)。
  • 关键回归:曾整片报错的 UsrAuthServiceImplTest(含 JwtUtil mock)本次 9/9 全绿,证明 Byte Buddy×JDK25 根因已消除。
  • 各 IT(UsrLoginIT 12、UsrUserQueryIT 13、UsrUserUpdateIT 6、UsrUserCreateIT 5、AuthLoginConfigIT 1)全部通过。

结论

usr 模块硬测试闸 r1 = GREEN。无 flake(本次为修复后首跑即绿;历史 RED 证据已随旧工具链一并移除,非本轮 attempt 序列)。报告阶段前置(末次 attempt green)已满足。