# Test Coverage ## ADDED Requirements ### Requirement: 建立单元测试体系 系统 SHALL 建立完整的单元测试体系,覆盖核心业务逻辑。 #### Scenario: config 包测试覆盖 - **WHEN** 运行 config 包的单元测试 - **THEN** SHALL 覆盖 Provider、Model、Stats 的 CRUD 操作 - **THEN** SHALL 测试正常场景和错误场景 - **THEN** SHALL 验证数据库操作的准确性 #### Scenario: router 包测试覆盖 - **WHEN** 运行 router 包的单元测试 - **THEN** SHALL 覆盖模型路由逻辑 - **THEN** SHALL 测试模型不存在、模型禁用、供应商禁用等场景 - **THEN** SHALL 验证路由结果的正确性 #### Scenario: protocol 包测试覆盖 - **WHEN** 运行 protocol 包的单元测试 - **THEN** SHALL 覆盖 OpenAI 和 Anthropic 协议转换逻辑 - **THEN** SHALL 测试请求转换、响应转换、流式转换 - **THEN** SHALL 验证转换的准确性和完整性 ### Requirement: 建立集成测试体系 系统 SHALL 建立集成测试体系,覆盖 API 端到端流程。 #### Scenario: OpenAI 协议集成测试 - **WHEN** 运行 OpenAI 协议的集成测试 - **THEN** SHALL 测试完整的请求-响应流程 - **THEN** SHALL 测试流式响应流程 - **THEN** SHALL 测试错误处理流程 #### Scenario: Anthropic 协议集成测试 - **WHEN** 运行 Anthropic 协议的集成测试 - **THEN** SHALL 测试完整的请求-响应流程 - **THEN** SHALL 测试流式响应流程 - **THEN** SHALL 测试协议转换的准确性 #### Scenario: 管理接口集成测试 - **WHEN** 运行管理接口的集成测试 - **THEN** SHALL 测试 Provider、Model、Stats 的 CRUD 操作 - **THEN** SHALL 验证 API 响应格式 - **THEN** SHALL 测试错误场景 ### Requirement: 提供测试工具函数 系统 SHALL 提供测试工具函数,简化测试编写。 #### Scenario: 测试数据库初始化 - **WHEN** 编写需要数据库的测试 - **THEN** SHALL 提供测试数据库初始化函数 - **THEN** SHALL 使用临时数据库文件 - **THEN** SHALL 在测试结束后自动清理 #### Scenario: Mock 工具 - **WHEN** 编写需要 Mock 的测试 - **THEN** SHALL 提供 Mock 接口实现 - **THEN** SHALL 支持常见 Mock 场景 - **THEN** SHALL 易于使用和扩展 ### Requirement: 达到测试覆盖率目标 系统 SHALL 达到 > 80% 的测试覆盖率。 #### Scenario: 总体覆盖率 - **WHEN** 运行所有测试并生成覆盖率报告 - **THEN** 总体覆盖率 SHALL 大于 80% - **THEN** 核心包覆盖率 SHALL 大于 85% #### Scenario: 覆盖率报告生成 - **WHEN** 运行测试覆盖率命令 - **THEN** SHALL 生成覆盖率报告文件 - **THEN** SHALL 支持生成 HTML 格式报告 - **THEN** SHALL 显示每个文件的覆盖率 ### Requirement: 集成到构建流程 测试 SHALL 集成到构建流程中。 #### Scenario: 运行测试命令 - **WHEN** 执行 `make test` 命令 - **THEN** SHALL 运行所有单元测试和集成测试 - **THEN** SHALL 显示测试结果 - **THEN** SHALL 在测试失败时返回非零退出码 #### Scenario: 覆盖率检查命令 - **WHEN** 执行 `make test-coverage` 命令 - **THEN** SHALL 运行测试并生成覆盖率报告 - **THEN** SHALL 检查覆盖率是否达标 - **THEN** SHALL 在覆盖率不足时返回非零退出码