集成测试函数与流编写器

时间:2014-05-30 13:31:08

标签: c# unit-testing stream filesystems nunit

我有一个快速的问题,因为我在C#中集成测试流编写器遇到了一些问题。在我目前的位置,我们认为任何接触文件系统的单元测试都是失败的,不知道它是如何堆叠到其他地方的,因为这实际上是我的第一个编码位置,但这就是这里的情况。当我从文本文件中读取时,这会导致我使用流而不是File.IO,因为我可以这样做:

private void ReadMe(Stream stream)
{
    using (var reader = new StreamReader(stream))
    {
        //do stuff
    }
}

这允许我在集成测试期间抛出内存流并将自己从文件系统中解放出来。但这并没有延伸到文件的写入。例如:

private void WriteMe(Stream stream)
{
    using (var reader = new StreamWriter(stream))
    {
        //do stuff
    }
}

这将是Dispose之前的流,我有机会看到它写的是什么,因为它确实应该。可悲的是,这意味着我必须将我的写作转移到通常太简单而不需要测试的小型简单函数中,这是一种令人烦恼且难以阅读的触摸。我问办公室周围,但没有人费心去寻找方法,我只是想知道是否有办法将记忆流提供给作家并实际保留了以后为解剖而写的内容。 。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

你不需要做任何事情。

StreamReader被处理时,MemoryStream也会被删除,但它不会删除它的内容,所以你仍然可以MemoryStream.ToArray();

我能想到的唯一问题是,对于每个测试,您应该创建一个新的MemoryStream