2010-01-21 98 views
5

我正處於爲我的工作企業應用程序編寫XML模式的最初階段。要驗證的XML表示一個應用程序 - 類似於Winforms - 表單,網格,菜單等,但沒有佈局。我應該單元測試XML模式嗎?

XSD的主要目的不在於驗證XML,而在於爲XML文件添加設計時可發現性,以便獲得可用元素和屬性的IntelliSense。

當我編寫模式時,我發現自己正在執行TDD的元素並根據模式驗證文檔,更改文檔或模式中的元素/屬性以使驗證無法確保我正在編寫模式正確。

這給我帶來了一個問題:我是否應該對模式進行單元測試,只是在它上面拋出一些XML的排列,並確保它的行爲應該如何。

這對我來說肯定是有意義的,因爲我的XSD-fu很糟糕,而且我想更確定XSD本身就是一個規範,這是正確的。

+0

請查看:http://sut.sourceforge。net/ – yegor256 2013-12-09 10:44:45

回答

2

一般來說,我覺得很難測試XSD模式:

  • 對於XSD往往域的造型是關鍵,往往我沒有與XSD問題構建本身,而是我分析了域錯誤。
  • 生成的模型不是基於XSD本身,而是基於綁定配置(例如JAXB for Java)。所以最後你的測試太多了。
  • 這樣的測試取決於很多事情往往會經常中斷,特別是當您重構XSD時。

到底要提高質量XSD我喜歡:

  • 擁有XSD文件的早期的評論(由同事或QA)。讓實際人員看着他們(包括XSD和XML實例)發現了自動化測試永遠不會發現的缺陷。
  • 對生成的XML實例執行集成測試。這些集成測試可以自動進行。
+0

所有優點。我想這真的回答了我的問題,即xsd單元測試的迴歸值很小,問題通常是域模型,而不是XSD模式。 – 2010-01-25 02:56:01

2

如果您對XSD不太好,那麼我建議您使用TDD構建XSD。也就是說,創建一個失敗的單元測試,涉及驗證一些你想要工作的XML,以及一個不允許它驗證的XSD。然後,更新XSD以允許該XML驗證。然後,重構測試和XSD,重複測試。

3

我想沒有理由不單元測試XML模式。 如果它是代碼(它是),那麼TDD將傾向於測試它。

另一個問題將是如何去做呢? 一個簡單的方法是創建兩組示例xml文件,一個包含根據您的設計無效的所有文件,另一個包含有效的文件。然後簡單地用你的xml解析器解析每個組並聲明結果。

但實際的挑戰在於創建示例xml文件。特別是如果你也在同時發展你的設計。

+0

是的,我對於如何做到這一點並沒有太大的興趣,我很滿意在代碼中創建的XDocument,但是XML文件可能更具可讀性。 – 2010-01-21 05:33:30

相關問題