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