2012-12-07 209 views
1

我们需要验证我们生成的xml文档的内容。是否有任何框架可以帮助您轻松提取和验证文档的内容?MSTest的XML单元测试框架

的东西,我们需要知道

  • 包含元素的元素X
  • 值x
  • X元素包含z值属性Ÿ
  • 意想不到的元素

一点也没有”如果没有断言,那么这很重要,这可以通过MSTest完成

+0

你有xsd的xml吗? –

+0

我不想依赖xsd。此刻我们必须进行一些后期处理,以包含具有默认值的属性。我宁愿可以查询文档的东西。也许只是一些LINQ到基于xml的帮助程序 –

+0

我问到xsd的唯一原因是它可以很容易地生成POCO代码。一旦你将Xml反序列化为对象,验证内容是微不足道的。反序列化的行为将有助于验证格式化。 –

回答

6

看看流利断言库文件的位置:http://fluentassertions.codeplex.com/documentation

题为“XML类”的部分听起来像你以后。代码使用下面的LINQ-to-XML。

xDocument.Should().HaveRoot("configuration"); 
xDocument.Should().HaveElement("settings"); 

xElement.Should().HaveAttribute("age", "36"); 
xElement.Should().HaveElement("address"); 

xAttribute.Should().HaveValue("Amsterdam"); 

你可以从这里的NuGet安装FluentAssertions:http://nuget.org/packages/FluentAssertions

+0

这看起来完全是我以后的事情,我得试试看 –

1

您也可以使用像XSD.EXE工具(包括在VS)从你有你的XML XSD文件生成C#实体。

生成对象后,可以使用XmlSerializer的实例来反序列化XML。如果你不能反序列化你的XML,那么你会很快知道你有无效的XML。

之后,您应该能够通过使用反序列化实体的各种属性来相当容易地验证XML的内容。

Here is a good starter blog post关于从XSD生成实体对象,它使用XmlSerializer显示一些简单的反序列化代码。