# 测试与构建 — 总览 > 所属项目: free-code .NET 10 重写 > 配套文档: [总体概述与技术选型](../总体概述与技术选型/总体概述与技术选型.md) | [核心模块设计](../核心模块设计/核心模块设计.md) | [参考映射](reference/原始代码映射-测试与构建.md) --- ## 概述 本组文档覆盖 free-code .NET 10 重写项目的质量保证、构建发布和迁移规划三个方面。原始 TypeScript 项目没有系统化的测试套件;.NET 重写从零开始建立完整的分层测试体系,并以 AOT 单文件发布为目标设计构建管道。 测试框架采用 **xUnit 2 + NSubstitute 5 + FluentAssertions 7** 组合。目标覆盖率是核心路径 80%+,由 200 个测试用例(120 单元 + 60 集成 + 20 E2E)构成测试金字塔。 构建目标是跨 5 个平台(macOS arm64/x64、Linux x64/arm64、Windows x64)的 AOT 原生二进制,通过 `build.sh` 脚本批量发布,配合 `install.sh` 实现一键安装。 迁移路线图覆盖 35 个工作周,分 12 个阶段,设置 8 个里程碑节点,附带风险评估矩阵。 --- ## 子模块列表 ### [测试方案设计](测试与构建-测试方案设计.md) 覆盖三层测试项目结构、单元测试示例(`BashToolTests`、`ToolRegistryTests`、`AnthropicProviderTests`、`CompanionServiceTests`)、集成测试示例(`McpIntegrationTests`)、E2E 测试示例(`CliTests`),以及测试金字塔数量分布。 原始来源: 无直接对应(原始项目无系统测试) --- ### [构建与部署](测试与构建-构建与部署.md) 覆盖 `Directory.Build.props` 全局 MSBuild 配置、`FreeCode.csproj` 主项目引用、`build.sh` 多平台构建脚本、`install.sh` 一键安装脚本,以及 AOT + 单文件 + Trimmed 发布参数。 原始来源: `scripts/build.ts`(Bun 构建脚本)、`install.sh`(原始安装脚本) --- ### [迁移路线图](测试与构建-迁移路线图.md) 覆盖 35 周 12 阶段详细规划、M1-M8 里程碑说明表,以及风险评估与缓解策略矩阵。 原始来源: 无直接对应(新增规划文档) --- ## 测试金字塔 ``` [E2E: 20] / CliTests \ / OneShotMode \ / InteractiveRepl \ ================== [集成: 60] / QueryPipeline \ / McpIntegration \ / LspIntegration \ / BridgeIntegration \ / TaskManager Plugins \ ================================= [单元: 120] Engine / Tools / Commands / ApiProviders / Mcp / Lsp / Services / State ``` --- ## 关键设计决策 **测试替身策略** 所有外部依赖(HTTP 客户端、文件系统、进程管理)通过接口注入,测试中由 NSubstitute 的 `Substitute.For()` 替换,确保单元测试完全隔离,不依赖网络或本地环境。 **AOT 兼容优先** 构建配置全面启用 `AotPublish`、`PublishTrimmed`、`EnableAotAnalyzer`,确保代码在编译期就暴露反射问题,而不是在生产运行时崩溃。JSON 序列化通过 Source Generator 生成,完全不依赖运行时反射。 **平台矩阵覆盖** `build.sh` 对 `osx-arm64`、`osx-x64`、`linux-x64`、`linux-arm64`、`win-x64` 五个 RID 各生成独立的原生二进制,与原始 Bun 构建脚本的单平台模式相比,构建产物更小、启动更快。 --- ## 参考资料 - [原始代码映射 — 测试与构建](reference/原始代码映射-测试与构建.md) - [总体概述与技术选型](../总体概述与技术选型/总体概述与技术选型.md) - [核心模块设计 — 工具系统](../核心模块设计/核心模块设计-工具系统.md) - [基础设施设计](../基础设施设计/基础设施设计.md)