单元测试 – 如何将保存文件单元测试到磁盘?
我知道强烈建议您与文件系统分开运行单元测试,因为如果您在测试过程中触摸文件系统,那么您还可以测试文件系统本身.好的,这是合理的.
我的问题是,如果我要测试文件保存到磁盘,我该怎么办?与数据库一样,我分开一个负责数据库访问的接口,然后为我的测试创建另一个实现?还是还有其他一些方法?
我对此的态度对我刚才读到的
Growing Object-Oriented Software Guided by Tests(GOOS)书有很大的偏见,但这是我今天所了解的最好的.特别:
>创建一个接口,从代码中抽出文件系统.将这个类作为协作者/依赖关系来模拟它.这样可以快速地进行单元测试和反馈. 评论者更新: 如果您正在读取结构化数据(例如Book对象)(如果不为IEnumerable替换字符串) interface BookRepository { IEnumerable<Books> LoadFrom(string filePath); void SaveTo(string filePath,IEnumerable<Books> books); } 现在,您可以使用构造函数注入将模拟注入到客户端类中.客户类单元测试很快;不要命中文件系统.他们只是验证是否对依赖项调用了正确的方法(例如加载/保存) var testSubject = new Client(new Mock<BookRepository>.Object); 接下来,您需要创建一个BookRepository的真正实现,它可以在文件(或者如果你想要的时候使用Sql DB).没有人必须知道. [TestFixture] [Category("Integration - Slow")] public class FileBasedBookRepository { [Test] public void CanLoadBooksFromFileOnDisk() {...} [Test] public void CanWriteBooksToFileOnDisk() {...} } 最后应该有一个/多个验证测试,用于执行加载和保存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |