鉴于以下课程,您将如何为其编写单元测试?我已经读过,任何执行文件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();
}
}
}
答案 0 :(得分:6)
在类似的情况下,我修改了方法签名以接受TextWriter或Stream(取决于具体情况),并通过传入StringWriters或MemoryStreams并将生成的字符串或字节数组与预期结果进行比较来测试单元。从那里可以相当安全地假设FileWriter或FileStream将在文件中生成相同的输出,假设路径有效并且您具有必要的权限。
答案 1 :(得分:1)
可能这是一个你不需要写的测试例子。
但是,如果你想测试实际的文件级别的东西。您可以将已知文件写入特定位置,然后测试读取的二进制文件与预先设定的二进制流相同。