繁体   English   中英

单元测试:创建复杂的XDocument以测试xml阅读器

[英]Unit Testing: Creating complex XDocument for testing an xml reader

我有两个类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,我可以轻松地使用document字段来检查是否已使用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更复杂的情况下。

您对此事有何看法?

提前致谢。

我看不到您的实现,但是IMO您的类看起来像XDocument包装器,因此您的单元测试需要测试您的类在XDocument上调用了预期的方法。 我将模拟XDocument并验证是否为Set,Get,Save调用了您期望的方法。 否则,您将最终尝试对各种XML可能性进行单元测试,而XDocument已经处理了该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM