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

7.8 KiB
Raw Blame History

原始代码映射 — 测试与构建

所属项目: free-code .NET 10 重写 文档类型: 参考映射表 上级文档: 测试与构建总览


说明

本文档建立 .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 bundledotnet 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.shDarwin-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.csOneShotModeTests.cs E2E 验证
../../../src/screens/REPL.tsx InteractiveReplTests.cs E2E 验证
../../../src/components/ 无自动化 UI 测试Terminal.Gui 视图层手工验证)
../../../src/hooks/ 通过 QueryEngineTestsAppStateStoreTests 间接覆盖
../../../src/state/ AppStateStoreTests.cs 单元测试

参考资料