本文档为 OpenCourse 团队测试文档之 UserRepoTest
测试的主要功能:
-
上下文加载 (
contextLoads)- 验证 UserRepo 和 TestEntityManager 正确注入
-
按用户名查找用户 (
findByName)- 用户存在时返回对应用户(ADMIN、USER、VISITOR)
- 用户不存在时返回空 Optional
- 大小写敏感验证(严格匹配)
- 特殊字符用户名支持(如 user@123)
-
按邮箱查找用户 (
findByEmail)- 用户存在时返回对应用户(三种角色验证)
- 用户不存在时返回空 Optional
- 大小写敏感性测试(依赖数据库配置)
- 复杂邮箱格式支持(test.user+tag@sub.domain.com)
-
检查邮箱是否存在 (
existsByEmail)- 用户存在时返回 true
- 用户不存在时返回 false(包括空字符串)
- 与 findByEmail 结果保持一致性
-
用户实体基础功能验证 (
userEntityBasicFunctionality)- 验证用户的所有基本字段正确保存和读取
- 验证默认活跃度为1
- 验证自动生成字段(ID、创建时间)
-
用户角色枚举功能验证 (
userRoleEnumFunctionality)- 验证 ADMIN、USER、VISITOR 三种角色
- 验证角色与用户的正确映射关系
-
创建时间自动生成验证 (
createdAtAutoGeneration)- 保存时自动设置创建时间
- 时间戳在合理范围内(保存前后1秒)
- 初始更新时间为 null
-
更新时间自动生成验证 (
updatedAtAutoGeneration)- 更新用户时自动设置更新时间
- 创建时间保持不变
- 更新时间在合理范围内
-
用户活跃度功能验证 (
userActivityFunctionality)- 活跃度累加功能(addActivity)
- 多次累加的正确性
- 活跃度直接设置功能
-
用户toString方法验证 (
userToString)- 包含所有关键字段(除密码外)
- 密码安全性验证(不在字符串中显示)
- 格式正确性验证
-
邮箱唯一性约束验证 (
emailUniquenessConstraint)- 重复邮箱处理机制验证
- 数据库约束正确性检查
-
复杂查询场景验证 (
complexQueryScenarios)- 按角色统计用户数量
- 按用户名查找后验证邮箱一致性
- 跨方法查询结果一致性
-
用户创建场景验证 (
userCreationScenarios)- 最小有效用户创建
- 长用户名和邮箱处理
- 默认值正确设置
-
边界条件测试 (
edgeCases)- 空字符串搜索处理
- null值搜索处理
- 空格用户名处理
-
数据一致性验证 (
dataConsistency)- 所有用户数据完整性检查
- 邮箱唯一性验证
- 必需字段非空验证
- 邮箱格式验证
-
批量操作测试 (
bulkOperations)- 批量保存用户功能
- 批量操作后的数据验证
- 总数统计正确性
- 总测试方法数: 22 个
- 基础查询操作: 8 个
- 实体功能测试: 6 个
- 时间戳测试: 2 个
- 数据完整性测试: 3 个
- 边界条件测试: 2 个
- 批量操作测试: 1 个
testFindByName_*(4个): 测试按用户名查找testFindByEmail_*(4个): 测试按邮箱查找testExistsByEmail_*(3个): 测试邮箱存在性检查
testUserEntityBasicFunctionality_*(1个): 测试用户实体基础功能testUserRoleEnumFunctionality_*(1个): 测试用户角色枚举testUserActivityFunctionality_*(2个): 测试活跃度功能testUserToString_*(1个): 测试字符串表示testUserCreationScenarios_*(1个): 测试创建场景
testCreatedAtAutoGeneration_*(1个): 测试创建时间生成testUpdatedAtAutoGeneration_*(1个): 测试更新时间生成
testEmailUniquenessConstraint_*(1个): 测试邮箱唯一性testDataConsistency_*(1个): 测试数据一致性testComplexQueryScenarios_*(1个): 测试复杂查询一致性
testEdgeCases_*(1个): 测试边界情况- 各种特殊输入处理
testBulkOperations_*(1个): 测试批量保存功能
- Spring Data JPA
- H2 内存数据库 (测试环境)
- AssertJ 断言库
- JUnit 5 测试框架
- LocalDateTime 时间处理
- UserRole 自定义枚举类