2012-12-07 163 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顯示一些簡單的反序列化代碼。