给定以下类,您将如何为其编写单元测试?我读到任何做文件IO的测试都不是单元测试,所以这是一个需要编写的集成测试吗?我正在使用xUnit和最小起订量进行测试,我对它很陌生,所以也许我可以对文件进行最小起订价?不确定。
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();
}
}
}
在类似的情况下,我修改了方法签名,以接受TextWriter或Stream(取决于情况),并通过传递StringWriters或MemoryStream并将结果字符串或字节数组与预期结果进行比较来进行单元测试。从这里可以得出一个相当安全的假设,即假设路径有效并且您拥有必要的权限,FileWriter或FileStream将在文件中产生相同的输出。
这可能是一个不需要编写的测试示例。
但是,如果您想测试实际的文件级内容。你可以把一个已知的文件写到一个特定的位置,然后测试读入的文件的二进制流是否与预先录制的二进制流相同。