适用于
/test、阶段收尾验证、Review 后修复验证和归档前验收。目标是复用已有测试基线和执行记录,避免每次从零开始摸索。
test-spec.md、execution-log.md、spec.md、tasks.md,再决定本轮验证范围。按顺序读取:
AGENTS.md 或当前会话注入的项目规则。code-copilot/memory/preferences.md、code-copilot/memory/pitfalls.md、code-copilot/memory/decisions.md。code-copilot/rules/automated-testing-standard.md。spec.md、tasks.md。test-spec.md、execution-log.md。git status --short 和本轮相关文件的 git diff --name-only。如果 test-spec.md 或 execution-log.md 不存在,只创建缺失文件;不要重写已有记录。
根据变更文件选择验证矩阵:
| 变更类型 | 必跑验证 | 条件增强验证 |
|---|---|---|
| 仅文档/Spec/Task | git diff --check |
关键文档链接和状态一致性检查 |
| Java 后端 | 相关 Maven 模块 compile 或 package -DskipTests |
涉及业务逻辑时补单测;涉及主应用装配时跑 forge-admin-server package |
| Mapper XML / SQL 查询 | 后端编译 + Mapper XML 语法检查 | 有数据库时执行接口或 SQL 验证 |
| Flyway 脚本 | SQL 防重复检查 + Flyway placeholder 静态扫描 + 后端启动或 Flyway 实跑 | 有 dev 库时检查 forge_schema_history 和核心表/列/数据 |
| 前端 JS/Vue | pnpm build |
改 UI/交互时启动 Vite 并用浏览器或 Playwright 截图/点击验证 |
| API 协议 | 后端启动 + curl 验证变更接口 | 涉及鉴权/加密时验证普通调用和 X-Inner-Call 调用边界 |
| 流程/消息/触发器 | 后端 + Flow 服务 + 主路径接口验证 | 验证关联表、任务表、日志表或消息表落库 |
默认不全量跑 mvn test 或完整 E2E;只有共享基础能力、状态流转、权限、安全、数据迁移或用户明确要求时才升级。
test-spec.md:追加“本轮增量验证”小节。test-spec.md:从模板创建,至少写清楚 P0/P1 验证范围、命令、跳过项原因。git diff --check、静态解析、目标模块编译。在 execution-log.md 追加一条记录,包含:
tasks.md 只更新本轮相关 Task 的执行结果。spec.md 只更新执行日志、审查结论、HARD-GATE 或风险状态。code-copilot/memory/pitfalls.md。code-copilot/memory/decisions.md。code-copilot/memory/preferences.md。JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-admin-server -am package -DskipTests
插件级改动可优先跑:
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
Flyway 脚本变更必须先跑低成本静态检查,确认迁移脚本中没有会被 Flyway 解析的业务 ${...} 占位符:
rg -n '\$\{[^}]+\}' forge-server/db/migration
该命令应无输出;确需入库 ${...} 模板时,用 SQL CONCAT('$', '{token}') 形式拼接。
source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
POST /auth/loginGET /ai/business/document/config/{objectId}GET /ai/business/document/{objectCode}/{recordId}/runtimePOST /ai/business/flow/startGET /ai/business/flow/status/{objectCode}/{recordId}GET /ai/business/trigger/page?pageNum=1&pageSize=10GET /ai/business/trigger/scenario-templatesGET /ai/business/stats/{configKey}/metrics加密链路排查时可使用 X-Inner-Call: true 做内部验证,但最终结论必须说明是否覆盖真实用户调用链路。
一轮自动化测试完成必须满足: