# 测试规范 ## 概述 本规范基于项目现有代码实现,定义了单元测试和集成测试的设计原则和标准。项目目前尚未编写测试代码,本规范为未来测试开发提供指导。 ## 基本原则 1. **测试驱动开发**:优先编写测试代码,再实现业务逻辑。 2. **测试覆盖**:确保核心业务逻辑有足够的测试覆盖。 3. **独立性**:每个测试用例应独立运行,不依赖其他测试。 4. **可读性**:测试代码应清晰易懂,便于维护。 ## 测试框架 - **单元测试**:使用JUnit 5作为测试框架。 - **集成测试**:使用Spring Boot Test进行集成测试。 - **Mock框架**:使用Mockito进行依赖注入的模拟。 ## 测试结构 1. **测试类命名**:测试类以被测类名 + "Test" 命名,例如 `UserServiceTest`。 2. **测试方法命名**:使用描述性名称,遵循 `should_When_Then` 或 `test_方法名_场景` 格式。 3. **测试文件位置**:测试文件放置在 `src/test/java` 目录下,与主代码保持相同的包结构。 ## 单元测试规范 1. **测试范围**:主要测试Service层、Util类等业务逻辑。 2. **Mock依赖**:使用Mockito模拟外部依赖,如Mapper、外部服务。 3. **断言**:使用AssertJ或JUnit的断言方法进行结果验证。 ## 集成测试规范 1. **测试范围**:测试Controller层、数据库操作等。 2. **测试环境**:使用@SpringBootTest注解启动完整应用上下文。 3. **数据库测试**:使用H2内存数据库或Testcontainers进行数据库测试。 ## 测试数据 1. **测试数据准备**:在测试方法中使用@BeforeEach准备测试数据。 2. **数据清理**:在测试方法中使用@AfterEach清理测试数据。 3. **数据隔离**:确保测试数据不影响其他测试。 ## 测试运行 1. **Maven命令**:使用 `mvn test` 运行所有测试。 2. **IDE集成**:在IDE中直接运行测试类或方法。 3. **CI/CD集成**:在构建过程中自动运行测试。 ## 代码覆盖率 1. **覆盖率工具**:使用JaCoCo生成测试覆盖率报告。 2. **覆盖率目标**:核心业务代码覆盖率不低于80%。 3. **覆盖率检查**:在CI/CD中设置覆盖率阈值检查。 ## 注意事项 - 测试代码应与生产代码一同维护。 - 避免在测试中使用硬编码的外部依赖。 - 定期review测试代码,确保其有效性。