本项目为 momentTimeService.saveWall 方法创建了全面的测试套件,用于验证 Spring AI 集成是否正常工作。
-
MomentTimeServiceTest.java - 服务层单元/集成测试
- 路径:
src/test/java/com/slcp/devops/service/MomentTimeServiceTest.java - 测试内容: Service 层业务逻辑和 Spring AI 智能回复功能
- 路径:
-
MomentTimeControllerTest.java - Controller 层 HTTP 接口测试
- 路径:
src/test/java/com/slcp/devops/controller/MomentTimeControllerTest.java - 测试内容: REST API 接口和端到端集成测试
- 路径:
# 使用 Maven 运行所有测试
mvn test
# 只运行 MomentTime 相关的测试
mvn test -Dtest=MomentTimeServiceTest
mvn test -Dtest=MomentTimeControllerTestIntelliJ IDEA:
- 打开测试文件
- 点击类名或方法名旁边的绿色运行按钮
- 或右键选择 "Run 'MomentTimeServiceTest'"
Eclipse:
- 右键测试类文件
- 选择 "Run As" -> "JUnit Test"
# 运行单个测试方法
mvn test -Dtest=MomentTimeServiceTest#testSaveWall_WithAiResponsetestSaveWall_BasicFunction()- 目的: 验证留言墙保存的基本功能
- 验证点:
- 数据是否成功保存到数据库
- 返回的实体是否包含正确的ID和字段
- 数据库查询验证
testSaveWall_WithAiResponse()- 目的: 验证 Spring AI 集成是否正常工作
- 验证点:
- 小c机器人是否能成功回复
- AI 服务配置状态检测
- 降级处理验证(当 AI 未配置时)
- 异步回复机制验证
- 等待时间: 最多等待30秒获取AI回复
- 关键点: 这是验证 Spring AI 功能的核心测试
testSaveWall_DifferentQuestions()- 目的: 验证 AI 能否处理多种类型的问题
- 测试问题:
- 自我介绍类问题
- 技术性能优化问题
- 技术概念解释问题
- 注意: 需要 AI 服务已配置
- 图片类型留言墙
- 更新已存在的留言墙
- AI 服务状态检查
- 异步非阻塞验证
testSignIp()- 接口:
POST /momentTime/signip - 目的: 验证IP获取功能
testInsertWall()- 接口:
POST /momentTime/insertwall - 目的: 测试完整的留言墙创建流程和 AI 回复
- 特点:
- 发送HTTP请求创建留言
- 等待15秒后检查AI回复
- 端到端完整流程验证
- 查询留言墙列表
- 查询评论列表
- 新增评论
- 多条留言压力测试
- 异常情况测试
- 缓存功能验证
✓ Spring AI 服务已配置并可用
✓ 留言墙保存成功,ID: 123
✓ 收到小c机器人回复 (等待5秒)
回复内容: Java学习需要循序渐进...
✓ Spring AI 生成的智能回复验证通过
⚠ Spring AI 服务未配置,测试将验证降级逻辑
✓ 留言墙保存成功,ID: 123
✓ 收到小c机器人回复 (等待3秒)
回复内容: AI服务暂未启用,小c暂时无法回复😢
✓ 降级处理验证通过
✗ AI服务调用失败: Connection timeout
测试失败: AI服务配置存在问题
可能原因:
- AI 服务响应较慢
- AI API 配置错误
- 网络连接问题
解决方法:
# 1. 检查 application-dev.yml 中的 AI 配置
cat src/main/resources/application-dev.yml | grep -A 20 "spring.ai"
# 2. 查看日志输出
tail -f log/blog-dev.log | grep -i "ai\|spring.ai"
# 3. 增加测试等待时间(修改测试代码中的 maxWaitSeconds)可能原因:
- 依赖的服务未注入
- 数据库连接问题
解决方法:
# 1. 确保数据库正常运行
mysql -u root -p -e "SHOW DATABASES;"
# 2. 检查 Spring Boot 启动日志
mvn spring-boot:run
# 3. 验证所有必需的 Bean 已注册解决方法:
# 在 application-dev.yml 中添加/检查配置
spring:
ai:
openai:
api-key: your-api-key
base-url: https://api.openai.com/v1
model: gpt-3.5-turbo
# 或者使用其他 AI 提供商# 运行测试并生成 Surefire 报告
mvn clean test
# 查看报告
open target/surefire-reports/index.html# 使用 JaCoCo 生成覆盖率报告
mvn clean test jacoco:report
# 查看覆盖率报告
open target/site/jacoco/index.html测试 Spring AI 是否正常工作,请按以下清单验证:
- 运行
testSaveWall_BasicFunction- 验证基础功能 - 运行
testSaveWall_WithAiResponse- 验证AI回复 - 运行
testAiServiceStatus- 验证AI服务状态 - 运行
testInsertWall- 验证HTTP接口 - 检查日志中是否有 AI 相关错误
- 验证小c机器人回复内容是否合理
- 测试不同类型的问题是否都能得到回复
确保 application-dev.yml 或 application-test.yml 中数据库配置正确:
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database?useSSL=false
username: root
password: your_password可选:设置测试专用的环境变量
export SPRING_PROFILES_ACTIVE=test
export SPRING_AI_ENABLED=true# 查看应用日志
tail -f log/blog-dev.log
# 过滤 AI 相关日志
tail -f log/blog-dev.log | grep -i "ai\|小c机器人"
# 查看错误日志
tail -f log/blog-dev.log | grep ERROR成功的AI调用:
INFO - 小c机器人开始处理留言: 你好,Spring AI
INFO - AI响应时间: 1234ms
INFO - 小c机器人回复成功
AI服务未配置:
WARN - ChatClient not configured, using fallback response
INFO - 小c机器人: AI服务暂未启用
- 定期运行测试: 每次修改代码后都运行测试
- 关注AI响应时间: 如果响应时间过长,考虑优化或增加超时时间
- 测试数据清理: 测试会自动清理数据,但建议定期检查数据库
- 监控AI调用次数: 避免测试消耗过多的API配额
- 使用测试环境: 不要在生产环境运行这些测试
如果遇到问题:
- 查看测试日志输出
- 检查
log/blog-dev.log文件 - 确认 Spring AI 配置正确
- 验证数据库连接正常
- 查看
AI_USAGE.md了解 AI 服务配置详情
编写日期: 2025-10-27
测试框架: JUnit 5 + Spring Boot Test + MockMvc
Spring AI 版本: 根据项目 pom.xml