SuperAPI AI 工具集

snapshot-testing

测试与质量

查看项目

更新于 10-16 01:26

技能介绍

用途:在 .NET 项目中用 Verify 实现快照测试,将输出与人工批准的基线对比,捕获意外变更。适用于渲染输出(HTML 邮件、报表、生成代码)、公共 API 面审批、HTTP 响应体与响应头、序列化输出及复杂对象变更检测;不适合简单值断言、业务逻辑与性能测试。

主要能力:首次运行生成 .received. 文件,人工审查后批准为 .verified. 文件,后续运行自动比对,差异时失败并调用 diff 工具。支持对象、字符串、流的验证,可指定扩展名(如 html、xml)。提供内置擦除器处理非确定性值(DateTime、Guid 等),支持自定义擦除、忽略成员、正则替换行。支持 HTTP 响应验证(Verify.Http)、参数化测试 UseParameters()、自定义 JSON 转换器、公共 API 面审批(PublicApiGenerator)。

使用方式:引入 Verify.Xunit 与 Verify.Http 包;通过 ModuleInitializer 做一次性初始化,设置快照目录、全局擦除器,CI 环境下禁用 diff 工具;测试类需加 [UsesVerify];调用 Verify(...) 返回 Task。用 dotnet tool install -g verify.tool 安装 CLI,verify accept 接受快照。.gitignore 忽略 .received.,在 .gitattributes 配置 .verified.* 使用 LF。CI 中设置 CI: true,并可上传 received/verified 文件为构件。

限制与注意事项:不可提交 .received 文件,必须提交 .verified 文件;必须擦除日期、GUID、时间戳等非确定性值,否则每次运行都会失败;参数化测试必须使用 UseParameters(),否则所有组合写入同一文件;测试类遗漏 [UsesVerify] 会在运行时失败;合同相关值不应擦除;API 快速演进阶段不宜使用快照测试;跨测试框架的包版本建议使用版本范围。具体价格、平台支持等暂未提供。