我编写了一个用于将对象保存为xml的savefile方法。但是,我不确定如何在NUnit中测试该方法。我需要手动创建样本文件并比较文件之间的字符串吗?还有其他更好的测试方法吗?
谢谢您的答复。
啊,验证XML输出。欢迎来到地狱 :)
对我有效的方法是在内存中生成一个XmlDocument
对象。然后运行您的SaveFile方法,并将其加载到另一个XmlDocument
中。递归遍历两个XmlDocuments,比较所有元素和属性。
不幸的是,使用C#对象编写xml很大而笨重。我建议一次测试子部分。也许您的保存文件有一个<FileList>
子元素,一个<Cups>
子元素和一个<Rifles>
子元素。在这种情况下,编写一系列测试以确保每个子部分都正确完成,而不是整体输出。
选项
如果您展示代码会更容易。
我的方法是添加一层抽象。不要让Save方法直接处理XmlWriter。相反,创建包装器,每个包装器都能将数据的小逻辑块保存到xml,并对其进行测试。
对于每个包装器,都有一个类似于以下的方法
void Persist(XmlWriter writer);
让Save只从包装器中收集数据。换句话说,保存数据的责任将由包装器负责,但每个包装器只负责其中的一小部分。 您可以通过比较字符串(将StringWriter放入传递给Persist方法的XmlWriter中)来测试它