应文浩wenhao.ying@xiaobao100.com e25ac591a7 init easy-code
2026-04-06 07:24:24 +08:00

91 lines
3.7 KiB
Markdown
Raw 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) | [核心模块设计](../核心模块设计/核心模块设计.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<T>()` 替换,确保单元测试完全隔离,不依赖网络或本地环境。
**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)