用途:解决直接使用 System.IO 静态类导致代码难以测试的问题,将文件系统操作抽象为接口,便于依赖注入与测试替身。
主要能力:把 File、Directory、Path 等静态调用改为依赖 IFileSystem;在测试中用 MockFileSystem 在内存中模拟文件与目录;覆盖默认文件状态建立、验证写入结果、目录操作、串流与文件信息查询、备份文件等测试模式;可用 NSubstitute 模拟 UnauthorizedAccessException、IOException 等异常。
必要用法:正式项目引用 System.IO.Abstractions,测试项目引用 System.IO.Abstractions.TestingHelpers(资料中版本为 22.1.0)。重构时构造函数注入 IFileSystem,DI 中注册 services.AddSingleton<IFileSystem, FileSystem>();,测试中构造 MockFileSystem 并传入服务。
最佳实践:用 _fileSystem.Path.Combine 处理路径,读取前检查 File.Exists,写入前确保目录存在,妥善处理 IO 异常,每个测试使用独立 MockFileSystem。避免硬编码路径分隔符、在单元测试中使用真实文件系统、忽略异常处理。
适用场景:需要测试文件读写、目录操作、路径处理、配置加载保存与备份等逻辑的 .NET 项目。
限制:资料未提供具体收费、平台与效果数据;示例代码与完整模式需参考其 references/ 与 templates/ 目录。