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

3.7 KiB
Raw Blame History

测试与构建 — 总览

所属项目: free-code .NET 10 重写 配套文档: 总体概述与技术选型 | 核心模块设计 | 参考映射


概述

本组文档覆盖 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 个里程碑节点,附带风险评估矩阵。


子模块列表

测试方案设计

覆盖三层测试项目结构、单元测试示例(BashToolTestsToolRegistryTestsAnthropicProviderTestsCompanionServiceTests)、集成测试示例(McpIntegrationTests、E2E 测试示例(CliTests),以及测试金字塔数量分布。

原始来源: 无直接对应(原始项目无系统测试)


构建与部署

覆盖 Directory.Build.props 全局 MSBuild 配置、FreeCode.csproj 主项目引用、build.sh 多平台构建脚本、install.sh 一键安装脚本,以及 AOT + 单文件 + Trimmed 发布参数。

原始来源: scripts/build.tsBun 构建脚本)、install.sh(原始安装脚本)


迁移路线图

覆盖 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 兼容优先

构建配置全面启用 AotPublishPublishTrimmedEnableAotAnalyzer确保代码在编译期就暴露反射问题而不是在生产运行时崩溃。JSON 序列化通过 Source Generator 生成,完全不依赖运行时反射。

平台矩阵覆盖

build.shosx-arm64osx-x64linux-x64linux-arm64win-x64 五个 RID 各生成独立的原生二进制,与原始 Bun 构建脚本的单平台模式相比,构建产物更小、启动更快。


参考资料