使用流编写器集成测试函数



我有一个快速的问题要问你们,因为我在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,因为它确实应该这样做。遗憾的是,这意味着我不得不把我的写作转移到一些简单的小函数中,这些函数通常太简单了,不需要测试,这有点烦人,读起来很难看。我在办公室里四处打听,但从来没有人愿意为此寻找解决办法,我只是想知道是否有一种方法可以将记忆流提供给作家,并真正保留所写的内容,以便日后进行解剖。任何帮助都将不胜感激!

您不需要做任何事情。

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

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

最新更新