Files
gym-manage/e2e-tests/docs/backend-api-test.md
T

14 KiB
Raw Blame History

后端 API 测试文档

位置: gym-manage-api/ | 框架: JUnit 5 + Mockito + Maven | 用例数: 1,094 | 通过率: 100%


一、概览

后端 API 由 15 个 Maven 模块组成,采用 Spring WebFlux 响应式架构,测试覆盖 Handler(HTTP 入口)、Service(业务逻辑)、Util(工具类)、Filter(过滤器)、Converter(数据转换)等全层级。

维度
测试框架 JUnit 5 + Mockito + Spring Test + Reactor Test
构建工具 Maven
测试文件数 105
测试用例数 1,094
通过 1,094
失败 0
跳过 24(集成测试需数据库)
运行命令 mvn test -DfailIfNoTests=false

二、模块测试详情

2.1 manage-sys(系统管理核心)— 658 tests

最核心的模块,覆盖用户、角色、菜单、字典、配置、日志、审计、认证、安全等全部子系统。

Handler 层(HTTP 入口,共 135 tests

测试类 文件 用例数 测试内容
SysAuthHandlerTest handler/auth/ 9 登录、注册、登出
SysUserHandlerTest handler/user/ 20 用户 CRUD、分页、批量操作、角色分配
SysRoleHandlerTest handler/role/ 16 角色 CRUD、软删除/恢复、权限分配
MenuHandlerTest handler/menu/ 13 菜单树查询、按类型筛选、父子关系
MenuHandlerDataIntegrityTest handler/menu/ 11 菜单数据完整性、循环引用检测、并发
SysDictHandlerTest handler/dict/ 17 字典类型+数据 CRUD、缓存刷新
DictionaryHandlerTest handler/dictionary/ 9 字典管理完整流程
SysConfigHandlerTest handler/config/ 9 系统配置增删改查、按 key 查询
SysLogHandlerTest handler/log/ 18 登录日志查询、筛选、统计
OperationLogHandlerTest handler/log/ 7 操作日志查询、按模块筛选
StatsHandlerTest handler/stats/ 1 统计概览
AuditLogControllerTest audit/controller/ 11 审计日志 CRUD、按实体/操作人/时间查询

Service 层(业务逻辑,共 157 tests)

测试类 用例数 测试内容
SysUserServiceTest 30 用户创建、密码加密、角色绑定、分页、批量删除
SysUserServiceIntegrationTest 20 集成测试:用户+角色关联、事务回滚
SysRoleServiceTest 25 角色权限分配、菜单绑定、软删除恢复
SysMenuServiceTest 15 菜单树构建、排序、层级校验
SysDictTypeServiceTest 12 字典类型 CRUD、数据校验
SysDictDataServiceTest 12 字典数据 CRUD、类型关联
DictionaryServiceTest 10 字典管理综合逻辑
SysConfigServiceTest 8 配置参数校验、默认值
SysLoginLogServiceTest 10 登录日志记录、统计
SysExceptionLogServiceTest 8 异常日志记录、堆栈截断
OperationLogServiceTest 7 操作日志切面逻辑
AuditLogServiceTest 5 审计日志持久化、DTO转换

Domain / Primitive / DTO(值对象校验,共 180 tests

测试类 用例数 测试内容
SysUserTest 23 用户领域模型验证(字段约束、状态转换)
UsernameTest 15 用户名格式校验(长度、字符集、特殊字符)
PasswordTest 45 密码强度规则、加密格式、哈希验证
PasswordDetailedTest 40 密码复杂性详细规则(大小写、数字、特殊字符)
EmailTest 18 邮箱格式校验(RFC标准、中文邮箱)
SysUserQueryTest 8 用户查询对象(分页、排序、筛选条件)
SysRoleQueryTest 6 角色查询对象
CreateUserCommandTest 10 创建用户命令校验
UpdateUserCommandTest 8 更新用户命令校验
CreateRoleCommandTest 7 创建角色命令校验
UserResponseTest 5 用户响应 DTO
AuthResponseTest 3 认证响应 DTO
FilePreviewResponseTest 3 文件预览响应 DTO
AuditLogTest 6 审计日志领域模型
AuditLogQueryRequestTest 5 审计查询请求校验

安全 / 过滤器(共 52 tests)

测试类 用例数 测试内容
JwtTokenProviderTest 20 JWT 生成/解析/过期/签名验证/刷新
JwtAuthenticationFilterTest 15 认证过滤器(Token提取、路径白名单、401响应)
RateLimitFilterTest 12 限流过滤器(IP限制、令牌桶、滑动窗口)
SecurityConfigTest 5 Spring Security 配置验证

工具类 / 辅助(共 20 tests)

测试类 用例数
IpUtilsTest 12
UserAgentParserTest 8

回归测试(共 37 tests

测试类 用例数 测试场景
SystemConfigRegressionTest 37 边界条件、并发操作、SQL注入防护、大菜单性能、事务回滚

2.2 manage-gateway(网关)— 171 tests

微服务网关,负责 JWT 认证、RBAC 授权、签名验证、限流、熔断、路由、负载均衡。

过滤器(共 65 tests

测试类 用例数 测试内容
GatewayJwtAuthenticationFilterTest 13 JWT 解析:有效Token放行、无Token→401、无效Token→401、过期Token→401、公开路径放行
RbacAuthorizationFilterTest 13 RBAC 授权:管理员全路径、普通用户受限、多 HTTP 方法、权限继承
SignatureFilterTest 9 请求签名:生成/验证/过期/篡改检测/重放防护
ResilienceFilterTest 7 弹性策略:超时、重试、熔断半开状态
RateLimitFilterTest 12 限流:IP维度、用户维度、令牌桶算法、并发控制
CompressionFilterTest 11 响应压缩:gzip、brotli、大小阈值

服务层(共 55 tests

测试类 用例数 测试内容
SignatureServiceImplTest 12 签名服务实现
PermissionServiceImplTest 10 权限校验服务
JwtKeyServiceImplTest 8 JWT 密钥管理
DynamicRouteServiceTest 8 动态路由加载/更新/删除
RequestCacheServiceTest 5 请求缓存
AuditLogServiceTest 7 网关审计日志
CustomLoadBalancerTest 5 自定义负载均衡

集成测试(共 6 tests

测试类 用例数 测试内容
RbacIntegrationTest 6 /api/admin/users→403 拦截,/api/users/profile→放行

监控 / 指标(共 30 tests

测试类 用例数
GatewayMetricsTest 12
PerformanceMonitorTest 8
GatewayHealthIndicatorTest 5
ResilienceConfigTest 5

2.3 manage-db(数据库)— 72 tests

测试类 用例数 测试内容
QueryUtilTest 8 动态 SQL 构建(等值、范围、IN、LIKE、排序)
QueryUtilOrTest 6 OR 条件组合查询
QueryUtilDetailedTest 8 嵌套查询、子查询
SysUserConverterTest 5 PO ↔ VO 转换
SysRoleConverterTest 5 角色转换
SysMenuConverterTest 5 菜单转换
SysLoginLogConverterTest 5 登录日志转换
SysExceptionLogConverterTest 5 异常日志转换
SysDictTypeConverterTest 5 字典类型转换
SysDictDataConverterTest 5 字典数据转换
SysConfigConverterTest 5 配置转换
OperationLogConverterTest 5 操作日志转换
DictionaryConverterTest 5 字典转换

2.4 manage-common(通用工具)— 62 tests

覆盖 Redis、签名、JWT、加密、序列化等公共工具类。


2.5 manage-notify(通知公告)— 21 tests

测试类 用例数 测试内容
SysNoticeHandlerTest 12 公告 CRUD、发布/撤回、分页
SysWebSocketHandlerTest 9 WebSocket 连接、消息推送、广播/单播

2.6 manage-file(文件管理)— 17 tests

测试类 用例数 测试内容
SysFileHandlerTest 9 文件 CRUD、下载、预览
SysFileServiceTest 8 文件存储、路径生成、MIME 检测

2.7 manage-app(管理端)— 22 tests

测试类 用例数 类型 说明
RateLimitConfigTest 2 单元 限流配置验证
MultipartConfigTest 2 单元 文件上传配置
ManualTableCreationTest 1 集成 手动建表验证
DatabaseInitTest 5 集成 数据库初始化
SysUserServiceIntegrationTest 5 集成 用户服务集成
OperationLogIntegrationTest 4 集成 操作日志集成
OperationLogExportIntegrationTest 3 集成 日志导出

注:15 个集成测试需数据库连接,标记为 SKIP(跳过 17 个含 setup 方法)


2.8 gym-member(会员管理) 新增 — 40 tests

测试类 用例数 测试内容
MemberCardStateMachineTest 18 状态机全路径:ACTIVE/USED_UP/EXPIRED/REFUNDED × 6 事件、非法转换拦截、canTransition/validateTransition
MemberNoGeneratorTest 15 GYM前缀格式、8位合法字符集、不重复性验证、不含易混淆字符(0/O/1/I/l)、批量生成唯一性、count=0边界
BeanConvertUtilTest 7 正常转换、部分字段、null输入→null、批量转换、空列表、单元素

状态机测试覆盖表

状态 → 事件 USE RENEW EXPIRE REFUND DISABLE ACTIVATE
ACTIVE ACTIVE ACTIVE EXPIRED REFUNDED 非法 -
USED_UP 非法 ACTIVE - REFUNDED - -
EXPIRED 非法 ACTIVE - - - -
REFUNDED (终态) 非法 非法 非法 非法 非法 非法

2.9 gym-auth(手机号认证) 新增 — 10 tests

测试类 用例数 测试内容
PhoneAuthHandlerTest 5 一键登录正常返回、发送验证码成功/频率限制、验证码登录成功/错误异常传播
SmsServiceImplTest 5 60秒频率限制、首次发送、Redis缓存获取/不存在、配置属性验证

涉及 API

端点 方法 Handler
/api/auth/one-click-login POST PhoneAuthHandler.oneClickLogin
/api/auth/send-sms-code POST PhoneAuthHandler.sendSmsCode
/api/auth/code-login POST PhoneAuthHandler.codeLogin

2.10 gym-dataCount(数据统计) 新增 — 8 tests

测试类 用例数 测试内容
DataStatisticsHandlerTest 8 综合/会员/预约/签到统计正常返回、异常降级空结果、历史查询、导出Excel正常+异常降级

涉及 API

端点 测试场景
GET /api/statistics/summary MemberStatistics + BookingStatistics + SignInStatistics 聚合
GET /api/statistics/member 新增/活跃/累计/签到/预约/取消会员
GET /api/statistics/booking 新增/取消/出席/缺席/出席率/取消率
GET /api/statistics/signin 总数/成功/失败/成功率/扫码/手动/人脸
GET /api/statistics/history 历史统计列表
GET /api/statistics/export Excel 导出(4 Sheet

2.11 gym-checkIn(签到)— 10 tests

测试类 用例数 测试内容
CheckInModuleTest 10 二维码生成/有效性校验、签到成功/失败(无效二维码/不存在)、记录查询/单条/不存在、统计/每日统计、导出

涉及 API

端点 方法
/api/checkin/qrcode GET
/api/checkin POST
/api/checkin/records GET
/api/checkin/records/{id} GET
/api/checkin/stats GET
/api/checkin/stats/daily GET
/api/checkin/records/export GET

2.12 gym-groupCourse(团课)— 3 tests

测试类 用例数 测试内容
QRCodeUtilTest 3 QR 码生成、内容编码/解码、边界尺寸

2.13 无测试模块

模块 状态 原因
gym-payment 0 tests 模块未编写测试
manage-audit 0 tests 模块未编写测试

三、完整的 API 路由覆盖汇总

分类 API 路由 测试数 覆盖层
认证 POST /api/auth/login, /register, /logout 9 Handler
认证 POST /api/auth/one-click-login, /send-sms-code, /code-login 5 Handler
用户 GET/POST /api/users, GET/PUT/DEL /api/users/{id}, /page, /batch 20 Handler
角色 GET/POST /api/roles, GET/DEL /api/roles/{id}, /page 16 Handler
菜单 GET/POST /api/menus, GET /api/menus/{id}, /tree, /parent/{id} 24 Handler
字典 GET/POST /api/dict-types, GET/POST /api/dict-data 26 Handler
配置 GET/POST /api/configs, GET /api/configs/{id}, /key/{key} 9 Handler
文件 GET/POST /api/files, GET/DEL /api/files/{id}, /download, /preview 17 Handler+Service
通知 GET/POST /api/notices, GET/PUT/DEL /api/notices/{id} 21 Handler
操作日志 GET /api/operation-logs, /page, /export 7 Handler+集成
登录日志 GET /api/logs/login 18 Handler
审计日志 GET /api/audit-logs/* 11 Handler
签到 GET /api/checkin/qrcode, POST /api/checkin, GET /...{id}, /stats, /export 10 Handler
统计 GET /api/statistics/summary, /member, /booking, /signin, /history, /export 8 Handler
统计 GET /api/stats/overview 1 Handler
网关 JWT/RBAC/签名/限流/熔断/路由(非HTTP端点) 171 Filter+Service

四、运行方式

# 进入后端目录
cd gym-manage-api

# 运行全量测试
mvn test -DfailIfNoTests=false

# 运行单个模块
mvn test -pl gym-member -DfailIfNoTests=false

# 运行单个测试类
mvn test -pl gym-member "-Dtest=cn.novalon.gym.manage.member.handler.MemberCardStateMachineTest"

# 编译但不运行测试
mvn compile -DskipTests

五、测试架构

测试层级:
  Handler  → Mock Service   → 验证 HTTP 状态码 + 响应体
  Service  → Mock Repository → 验证业务逻辑 + 事务
  Filter   → Mock Exchange   → 验证过滤规则 + 异常处理
  Util     → 纯单元测试       → 验证输入输出 + 边界
  Domain   → 值对象测试       → 验证构造/校验/不变性
  Converter→ Mock 源对象      → 验证字段映射完整
  Integration → 真实 DB/H2  → 端到端业务流程

文档生成时间: 2026-07-21 | 测试工具: JUnit 5 + Mockito + Reactor Test + Maven