1
0
Files
nex/openspec/specs/test-coverage/spec.md
lanyuanxiaoyao f18904af1e feat: 实现分层架构,包含 domain、service、repository 和 pkg 层
- 新增 domain 层:model、provider、route、stats 实体
- 新增 service 层:models、providers、routing、stats 业务逻辑
- 新增 repository 层:models、providers、stats 数据访问
- 新增 pkg 工具包:errors、logger、validator
- 新增中间件:CORS、logging、recovery、request ID
- 新增数据库迁移:初始 schema 和索引
- 新增单元测试和集成测试
- 新增规范文档:config-management、database-migration、error-handling、layered-architecture、middleware-system、request-validation、structured-logging、test-coverage
- 移除 config 子包和 model_router(已迁移至分层架构)
2026-04-16 00:47:20 +08:00

3.2 KiB

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 在覆盖率不足时返回非零退出码