SuperAPI AI 工具集

testability-obstacle

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:当某个 C#/.NET 测试因真实文件系统、当前时间、延迟、随机值、环境变量、控制台或进程等环境依赖而无法确定性运行时,引入最小的、保持行为不变的生产接缝,并补充确定性测试,同时验证行为与接缝本身。

主要能力:按依赖类型选择最小接缝——时间/计时器注入 TimeProvider 并在测试中使用 FakeTimeProvider;文件系统优先复用已有抽象,单次读写可用注入委托;HTTP 复用已有 HttpClient/handler 接缝;随机性按需注入 Func<int>、Func<int, int, int> 或 Random;环境/控制台/进程用仅含目标成员的最小接口。对无法改动的静态 API,使用作用域化的 AsyncLocal<T> 环境接缝,要求跨 await 生效、返回 IDisposable 并恢复先前值、支持嵌套、默认指向真实依赖。

使用方式:先证明障碍并检查是否已有可用接缝;选择最小安全接缝;保持生产行为与公开 API 形状;更新所有组合根使生产默认仍用真实依赖;在既有测试项目中编写确定性测试;运行受影响的生产构建与最窄目标测试命令,并检查测试摘要而非仅退出码。输出为 Requirement | Evidence 表,引用接缝、默认接线、测试名与通过命令。

适用场景:需要为特定 C# 行为补充确定性测试、且用户明确允许或要求安全的生产接缝时。

限制:不适用于依赖已注入、需要仓库级可测试性审计、仅生成包装器、要求大规模机械迁移、已选定 TimeProvider/IFileSystem 迁移调用点,或非 C#/.NET 代码的情况。不得为测试便利扩大公开 API,不得用临时文件或真实 I/O 走捷径,不得修改进程环境变量,不得等待真实时钟。资料未提供具体安装命令、收费与平台信息。