什么是摆脱StreamReader/FileStream单元测试依赖的好方法?

Kry*_*tic 11 .net c# nunit unit-testing

这是场景:

我有一个方法,通过FileStream和.NET中的StreamReader读取文件.我想单元测试这个方法,并以某种方式删除对StreamReader对象的依赖.

理想情况下,我希望能够提供自己的测试数据字符串,而不是使用真实文件.现在,该方法始终使用StreamReader.ReadLine方法.为了使这个测试成为可能,我现在修改设计的方法是什么?

Jon*_*eet 11

依靠StreamTextReader来代替.然后您的单元测试可以使用MemoryStreamStringReader.(或者,如果需要,可以从测试程序集内部加载资源.)

注意ReadLine最初如何声明TextReader,而不是 StreamReader.