# 原始代码映射 — 测试与构建 > 所属项目: 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)