free-code-dotnet/docs/测试与构建/reference/原始代码映射-测试与构建.md
应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

117 lines
7.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 原始代码映射 — 测试与构建
> 所属项目: free-code .NET 10 重写
> 文档类型: 参考映射表
> 上级文档: [测试与构建总览](../测试与构建.md)
---
## 说明
本文档建立 .NET 10 测试类型和构建配置与原始 TypeScript 源文件之间的映射关系。测试层是 .NET 重写新增的内容(原始项目无系统化测试),因此大部分映射说明的是"覆盖哪个原始模块的逻辑"而不是"重写了哪个测试文件"。构建部分则记录了从 Bun 脚本到 MSBuild/dotnet publish 的对应关系。
---
## 测试覆盖映射
### 单元测试 — FreeCode.Tests.Unit
| 测试类 | 测试项目路径 | 覆盖原始 TS 文件 | 测试重点 |
|--------|------------|----------------|---------|
| `BashToolTests` | `Tests/Tools/BashToolTests.cs` | `../../../src/tools/BashTool.tsx` | 命令执行、超时中断、后台任务 ID、只读分类 |
| `FileReadToolTests` | `Tests/Tools/FileReadToolTests.cs` | `../../../src/tools/FileReadTool.tsx` | 路径验证、编码处理、行范围切片 |
| `FileEditToolTests` | `Tests/Tools/FileEditToolTests.cs` | `../../../src/tools/FileEditTool.tsx` | 字符串替换、多匹配报错、文件不存在报错 |
| `FileWriteToolTests` | `Tests/Tools/FileWriteToolTests.cs` | `../../../src/tools/FileWriteTool.tsx` | 新建文件、覆盖已有文件、父目录不存在 |
| `GlobToolTests` | `Tests/Tools/GlobToolTests.cs` | `../../../src/tools/GlobTool.tsx` | 模式匹配、路径限制、结果排序 |
| `GrepToolTests` | `Tests/Tools/GrepToolTests.cs` | `../../../src/tools/GrepTool.tsx` | 正则搜索、include 过滤、上下文行 |
| `AgentToolTests` | `Tests/Tools/AgentToolTests.cs` | `../../../src/tools/AgentTool.tsx` | 子代理启动、结果收集、嵌套深度限制 |
| `ToolRegistryTests` | `Tests/Tools/ToolRegistryTests.cs` | `../../../src/tools.ts` | 基础工具注册、MCP 工具去重、稳定排序 |
| `QueryEngineTests` | `Tests/Engine/QueryEngineTests.cs` | `../../../src/QueryEngine.ts` | 消息循环、工具调用轮次、流式输出 |
| `SystemPromptBuilderTests` | `Tests/Engine/SystemPromptBuilderTests.cs` | `../../../src/QueryEngine.ts`(内联 `getSystemPrompt`| 六段构建顺序、feature flag 条件段 |
| `CommandRegistryTests` | `Tests/Commands/CommandRegistryTests.cs` | `../../../src/commands.ts` | 命令注册、可用性过滤、认证状态过滤 |
| `AnthropicProviderTests` | `Tests/ApiProviders/AnthropicProviderTests.cs` | `../../../src/services/api/claude.ts` | SSE 解析、事件类型映射、错误处理 |
| `CodexProviderTests` | `Tests/ApiProviders/CodexProviderTests.cs` | `../../../src/services/api/`Codex adapter| 消息格式转换、流式响应 |
| `ProviderRouterTests` | `Tests/ApiProviders/ProviderRouterTests.cs` | `../../../src/services/api/`env 判断逻辑)| 环境变量路由、默认提供商 |
| `McpClientTests` | `Tests/Mcp/McpClientTests.cs` | `../../../src/services/mcp/` | JSON-RPC 请求/响应、工具调用 |
| `McpClientManagerTests` | `Tests/Mcp/McpClientManagerTests.cs` | `../../../src/services/mcp/` | 多服务器管理、断线重连 |
| `TransportTests` | `Tests/Mcp/TransportTests.cs` | `../../../src/services/mcp/`(传输层)| stdio 传输、SSE 传输 |
| `LspClientManagerTests` | `Tests/Lsp/LspClientManagerTests.cs` | `../../../src/services/lsp/` | 服务器实例管理、LSP 协议握手 |
| `AuthServiceTests` | `Tests/Services/AuthServiceTests.cs` | `../../../src/services/oauth/` | Token 缓存、刷新逻辑 |
| `RateLimitServiceTests` | `Tests/Services/RateLimitServiceTests.cs` | `../../../src/services/` | 令牌桶算法、429 处理 |
| `SessionMemoryServiceTests` | `Tests/Services/SessionMemoryServiceTests.cs` | `../../../src/services/sessionMemory/` | 记忆读写、过期淘汰 |
| `CompanionServiceTests` | `Tests/Services/CompanionServiceTests.cs` | 无直接对应(新增 Companion 功能)| 骰子确定性、用户隔离 |
| `NotificationServiceTests` | `Tests/Services/NotificationServiceTests.cs` | `../../../src/services/` | 通知订阅、事件分发 |
| `AppStateStoreTests` | `Tests/State/AppStateStoreTests.cs` | `../../../src/state/` | 状态不可变性、订阅通知、并发安全 |
---
### 集成测试 — FreeCode.Tests.Integration
| 测试类 | 测试项目路径 | 覆盖场景 | 涉及原始模块 |
|--------|------------|---------|------------|
| `QueryPipelineTests` | `QueryPipelineTests.cs` | 完整查询管道QueryEngine + Provider + ToolRegistry | `../../../src/QueryEngine.ts` + `../../../src/tools.ts` |
| `McpIntegrationTests` | `McpIntegrationTests.cs` | 真实 MCP stdio 服务器连接和工具调用 | `../../../src/services/mcp/` |
| `LspIntegrationTests` | `LspIntegrationTests.cs` | LSP 服务器启动、诊断获取 | `../../../src/services/lsp/` |
| `BridgeIntegrationTests` | `BridgeIntegrationTests.cs` | IDE Bridge 握手和命令分发 | `../../../src/bridge/` |
| `TaskManagerTests` | `TaskManagerTests.cs` | 后台任务创建、状态更新、取消 | `../../../src/tasks/` |
| `PluginLoadingTests` | `PluginLoadingTests.cs` | AssemblyLoadContext 加载卸载插件 | `../../../src/plugins/` |
---
### E2E 测试 — FreeCode.Tests.E2E
| 测试类 | 测试项目路径 | 覆盖场景 | 涉及原始模块 |
|--------|------------|---------|------------|
| `CliTests` | `CliTests.cs` | `--version``--help` 标志输出 | `../../../src/entrypoints/cli.tsx` |
| `OneShotModeTests` | `OneShotModeTests.cs` | `-p "prompt"` 一次性模式完整流程 | `../../../src/entrypoints/cli.tsx` |
| `InteractiveReplTests` | `InteractiveReplTests.cs` | 伪终端输入输出验证 | `../../../src/screens/REPL.tsx` |
---
## 构建映射
### 构建脚本对应
| .NET 构建文件 | 原始 TS 文件 | 功能对应 | 关键差异 |
|--------------|------------|---------|---------|
| `Directory.Build.props` | 无直接对应 | 全局项目属性 | MSBuild 中心化配置Bun 项目无此概念 |
| `build.sh` | `scripts/build.ts` | 多平台批量构建 | Bun 打包 JS bundle`dotnet publish` 输出 AOT 原生二进制 |
| `install.sh` | `install.sh`(原始)| 一键安装 | 检测逻辑相同;目标文件从 Bun bundle 改为 AOT 二进制 |
| `FreeCode.csproj` | `package.json` | 项目依赖和元数据 | 明确引用各子项目,取代 npm 依赖树 |
---
### 发布目标对应
| .NET RID | 原始 Bun 平台 | 说明 |
|----------|-------------|------|
| `osx-arm64` | Darwin arm64 | Apple Silicon Mac与原始 `install.sh``Darwin-arm64` 分支对应 |
| `osx-x64` | Darwin x86_64 | Intel Mac与原始 `Darwin-x86_64` 分支对应 |
| `linux-x64` | Linux x86_64 | 主流 Linux 服务器,与原始 `Linux-x86_64` 分支对应 |
| `linux-arm64` | Linux aarch64 | 与原始 `Linux-aarch64` 分支对应 |
| `win-x64` | 无(原始不支持 Windows| .NET 重写新增的目标平台 |
---
## 未直接映射的原始文件
以下原始文件无对应测试文件(原始项目没有测试),相关逻辑的验证由集成测试和 E2E 测试覆盖:
| 原始文件 | 验证方式 |
|----------|---------|
| `../../../src/entrypoints/cli.tsx` | `CliTests.cs``OneShotModeTests.cs` E2E 验证 |
| `../../../src/screens/REPL.tsx` | `InteractiveReplTests.cs` E2E 验证 |
| `../../../src/components/` | 无自动化 UI 测试Terminal.Gui 视图层手工验证)|
| `../../../src/hooks/` | 通过 `QueryEngineTests``AppStateStoreTests` 间接覆盖 |
| `../../../src/state/` | `AppStateStoreTests.cs` 单元测试 |
---
## 参考资料
- [测试与构建总览](../测试与构建.md)
- [测试方案设计](../测试与构建-测试方案设计.md)
- [构建与部署](../测试与构建-构建与部署.md)
- [迁移路线图](../测试与构建-迁移路线图.md)
- [原始代码映射 — 核心模块](../../核心模块设计/reference/原始代码映射-核心模块.md)