【发布时间】:2016-07-15 14:21:00
【问题描述】:
我有两个类 XmlWriter 和 XmlReader,它们在内部使用 XDocument 来存储/读取简单值,例如双精度、字符串和数组。
XmlWriter 类基本上是这样的
class XmlWriter
{
internal XDocument document;
Set(string name, double value);
Set(string name, Int32 value);
…
SaveToFile(string filename);
}
现在,如果我想为 Set(string, double) 方法创建一个 UnitTest,我可以轻松地使用文档字段来检查是否使用 XPath 添加了正确的元素。
xmlWriter.Set("something," 123);
var myAddedElement = xmlWriter.document.XPathSelectElement(…);
Assert.AreEqual(myAddedElement.Value, 123);
此方法适用于 XmlWriter。然而,XmlReader 的测试非常棘手。据我所知,我有两个选择:
首先,我可以使用 XmlWriter 为 XmlReader 的单元测试设置 XDocument。
//Quick and dirty to give you an idea
writer.Set("something", 123);
reader.document = writer.document;
Assert.AreEqual(123, reader.Get("something");
我不太喜欢这样,因为现在 XmlReader 的 UnitTests 严重依赖于 XmlWriter 类。如果我破坏了 XmlWriter 类,XmlReader 的单元测试肯定也会失败。
我想到的另一个选择是手动创建 XDocument,这将变得相当乏味,尤其是如果 XmlStructure 稍微复杂一些。
你对这件事有什么看法?
提前致谢。
【问题讨论】:
-
我的建议只是创建一个具有所需属性的类并使用序列化来写入/读取文件。
标签: c# xml unit-testing