6

给定以下课程,您将如何为它编写单元测试?我读过任何执行文件 IO 的测试都不是单元测试,那么这是需要编写的集成测试吗?我正在使用 xUnit 和 MOQ 进行测试,而且我对它很陌生,所以也许我可以 MOQ 文件?没有把握。

public class Serializer
{
    public static T LoadFromXmlFile<T>(string path)
        where T : class
    {
        var serializer = new XmlSerializer(typeof(T));

        using (var reader = new StreamReader(path))
        {
            return serializer.Deserialize(reader) as T;
        }
    }

    public static void SaveToXmlFile<T>(T instance, string path)
    {
        var serializer = new XmlSerializer(typeof(T));

        using (var writer = new StreamWriter(path))
        {
            serializer.Serialize(writer, instance);

            writer.Flush();
        }
    }
}
4

2 回答 2

6

在类似的情况下,我修改了方法签名以接受 TextWriter 或 Stream(取决于情况)并通过传入 StringWriters 或 MemoryStreams 并将结果字符串或字节数组与预期结果进行比较来进行单元测试。从那里可以相当安全地假设 FileWriter 或 FileStream 将在文件中产生相同的输出,假设路径有效并且您具有必要的权限。

于 2013-08-15T01:09:22.430 回答
1

可能这是您不需要编写的测试示例。

但是如果你想测试实际的文件级别的东西。您可以将已知文件写出到特定位置,然后测试读入的文件的二进制文件是否与预装二进制流相同。

于 2013-08-15T11:48:14.197 回答