SuperAPI AI 工具集

dotnet-snapshot-testing

测试与质量

查看项目

更新于 10-16 02:33

技能介绍

用途:使用 Verify 库对 .NET 中的复杂输出做快照(审批)测试,将实际输出与已审批的基线文件对比,覆盖 API 响应、序列化对象、渲染邮件等场景。

主要能力:Verify 库的安装与快照生命周期;清洗和过滤非确定性值(日期、GUID、时间戳);为领域类型编写自定义转换器;组织与审阅快照文件;集成 xUnit、NUnit、MSTest。

必要用法:需 .NET 8.0+ 基线,测试项目已通过 dotnet-add-testing 搭建并引用 Verify 包。示例使用 Verify.Xunit,另有 Verify.NUnit、Verify.MSTest;HTTP 响应校验需 Verify.Http。每个测试程序集需一次性初始化,在测试项目根目录放置 ModuleInitializer 并调用 VerifySourceGenerators.Initialize()。测试类需标注 [UsesVerify]。首次运行生成 .verified.txt 基线,失败时生成 .received.txt 供审阅。参数化测试需调用 UseParameters()。可用 ScrubLinesWithReplace、ScrubLinesContaining、IgnoreMember 等处理非确定性值。CLI 接受命令:dotnet tool install -g verify.tool,verify accept。CI 中设置 DiffEngine_Disabled: true 或禁用 DiffRunner。

适用场景:多字段对象、API 响应、渲染内容等复杂输出的回归校验。

限制:简单值若可用 Assert.Equal 则不宜用快照;必须清洗所有非确定性值,否则测试不稳定;.verified.txt 应提交版本控制,.received.txt 不应提交;API 快速演进期不宜使用;不同测试框架的 Verify 包版本线独立,应使用版本范围而非固定版本。测试项目脚手架、测试策略、集成测试基础设施不在本技能范围内。