2.6 KiB
2.6 KiB
测试方案
本文档概述了针对后端API所采用的测试策略、工具和覆盖范围。
1. 测试策略
我们采用分层测试的策略,以确保代码质量和功能正确性。
1.1 单元测试 (Unit Tests)
- 目标: 验证单个服务(Service)或组件内部的业务逻辑是否正确。
- 范围: 主要针对
ActivityService中的公共方法。 - 实现: 测试用例位于
ActivityServiceTest.java中。在此层面,所有外部依赖(如数据库、其他服务)都应被模拟(Mock),以保证测试的独立性和速度。 - 覆盖场景:
- 业务规则校验(如活动时间合法性)。
- 边界条件(如各种奖励计算的临界值)。
- 异常路径(如当依赖的服务失败时,是否抛出预期的异常)。
1.2 集成测试 (Integration Tests)
- 目标: 验证从API端点到服务层的完整请求-响应流程是否通畅。
- 范围: 主要针对
controller包下的所有API控制器。 - 实现: 测试用例位于
ActivityControllerTest.java和ApiKeyControllerTest.java中。我们使用 Spring Boot 的@WebMvcTest配合MockMvc来实现。@WebMvcTest提供了一个轻量级的测试环境,只加载Web层相关的Bean(如Controller,ObjectMapper等),而不加载完整的Spring应用上下文,从而加快测试速度。ActivityService在此层被@MockBean模拟,使我们能专注于测试Controller的行为,如URL映射、HTTP方法、请求/响应的序列化/反序列化、参数验证和正确的HTTP状态码返回。
- 覆盖场景:
- 成功路径: 验证有效的请求是否能被正确处理并返回
2xx状态码和预期的响应体。 - 验证失败路径: 验证无效的请求体(如字段为空)是否会触发Bean Validation并返回
400 Bad Request。 - 资源未找到路径: 验证请求一个不存在的资源(如
GET /api/v1/activities/999)是否返回404 Not Found。
- 成功路径: 验证有效的请求是否能被正确处理并返回
2. 测试工具
- JUnit 5: Java世界中最主流的测试框架。
- Mockito: 用于创建和配置模拟对象(Mock),以实现测试的隔离。
- Spring Boot Test: 提供了与Spring生态无缝集成的测试支持,包括
@SpringBootTest,@WebMvcTest,@MockBean等核心功能。 - MockMvc: 用于在不启动真实HTTP服务器的情况下,对Spring MVC控制器进行端到端的调用和验证。
- H2 Database: 一个内存数据库,用于在运行单元测试时快速执行数据库迁移(Flyway),确保SQL脚本的语法正确性。