Sam*_*Sam 6 c# integration-testing unit-testing moq xunit
鉴于以下课程,您将如何为其编写单元测试?我已经读过,任何执行文件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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在类似的情况下,我修改了方法签名以接受TextWriter或Stream(取决于具体情况)和单元测试,通过传入StringWriters或MemoryStreams并将得到的字符串或字节数组与预期结果进行比较.从那里可以相当安全地假设FileWriter或FileStream将在文件中生成相同的输出,假设路径有效并且您具有必要的权限.