test-spec.md 4.3 KB

单测 Spec — 用户租户登录与授权优化

status: apply created: 2026-06-25

0. 测试原则

  • Red/Green TDD:本轮优先修复现有产品链路,以编译/构建/接口签名验证为主。
  • First Run the Tests:执行验证前读取 code-copilot/rules/automated-testing-standard.md
  • 展示工作:实际命令与输出追加到 execution-log.md
  • 增量复用:只记录本变更增量验证,不覆盖其他变更执行日志。

1. 测试框架

项目
JUnit 版本 由 Maven 模块继承
Mock 框架 未新增
已有测试数量 本轮不统计全量
已有测试风格 Maven 模块编译校验 + 前端生产构建

2. 覆盖范围

P0 — 核心业务逻辑(必须覆盖)

类名 方法 场景 输入 预期结果
SystemAuthServiceImpl getLoginConfig(String, Long) 指定启用租户 userClient=pc, tenantId=1 返回验证码配置和租户展示字段
SystemAuthServiceImpl listLoginTenantOptions() 登录页租户列表 仅返回启用租户选项
SysUserServiceImpl batchBindUserRoles 批量授权 多 userIds + roleIds + tenantId 复用单用户角色校验并写入
SysUserServiceImpl batchBindUserTenant 批量加入租户 多 userIds + tenantId 复用租户校验并写入成员关系
LoginTenantAssetController getTenantAsset 登录页品牌图 tenantId + logo/icon 只返回启用租户配置中引用的安全图片文件

P1 — 数据访问层

  • SysUserMapper.xml 用户分页查询聚合 sys_user_tenant 多租户名称,避免前端列表逐行补查。
  • 批量接口复用现有 Mapper 和 MyBatis-Plus 基础方法。

P2 — 入口层/服务层

  • 编译校验 Controller、DTO、Service、Auth 接口签名一致。
  • 前端构建校验登录页和用户管理页模板、响应式变量、组件导入无错误。

不测试(明确列出原因)

  • 不新增数据库迁移,跳过 Flyway 迁移验证。
  • 未启动后端真实环境,接口 curl 视本地数据库/Redis 可用性再补充。

3. 执行计划

  • Step 1: 读取自动化测试标准。
  • Step 2: 后端 system 模块编译。
  • Step 3: 前端 build。
  • Step 4: 将命令、结果、警告、跳过项写入 execution-log.md

4. 历史验证基线

时间 范围 命令 结果 备注

5. 本轮增量验证

时间 变更范围 必跑项 实际命令 结果 跳过/警告
2026-06-25 12:50 CST 用户租户登录与授权优化 后端模块编译 env 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 -q -pl forge-framework/forge-plugin-parent/forge-plugin-system -am compile -DskipTests 通过 首次未指定 Java 17 时失败,原因是系统默认 JDK 不支持 target 17;指定 Java 17 后通过
2026-06-25 12:50 CST 登录页和用户管理页 前端生产构建 /bin/zsh -lc "source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build" 通过 存量警告:组件命名冲突、CSS // 注释、动态/静态 import 混用 chunk 提示,不阻断
2026-06-25 13:36 CST 多租户编辑、列表租户名、登录品牌图公开白名单接口 diff/后端编译/前端构建 git diff --check -- <本轮相关文件>env 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 -q -pl forge-framework/forge-plugin-parent/forge-plugin-system -am compile -DskipTestssource ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build 通过 前端仍有既有 CSS // 注释、组件命名冲突、chunk 提示;未阻断

6. 执行证据

  • execution-log.md:已补充
  • 关键接口:/auth/loginConfig/auth/tenant/options/system/user/batch/roles/system/user/batch/tenants
  • 关键数据库检查:无新增表结构
  • 服务启动与停止:本轮未启动后端或前端服务