2009-10-21 122 views
0

我在寫幾個生成xml文件的類。 (細節目前可能不重要)。測試策略:生成XML文件

我想知道最好的測試策略是。

  • 我不想重新寫XML生成代碼只是爲了比較輸出,當我可以將文件寫入磁盤,並將其在一定的目標,比較(XML規範不會經常變化,如每隔幾年一次或兩次)
  • 我更感興趣的測試架構的行爲,而不是干將&制定者

選項浮現在腦海:

  • 在測試環境中重建xml文件並比較字符串表示
  • 手動檢查結果(寫入文件等)
  • 在測試環境中重建內存中的xml文件並比較內存中元素。

虛擬獎金如果您知道C++和/或Google Test的任何庫。

想法?

+0

我編輯了我的答案,包括一個C++庫。 – bobbymcr 2009-10-21 04:04:57

回答

3

您是否考慮過使用XSD並驗證XML到XSD?你沒有提及它是否是你正在測試的內容或結構(可能是兩者)。
如果驗證通過,它將測試XML的結構將符合所需的結構。

+0

測試,通過XSD驗證似乎也是一個好主意。 (+1) – cbrulak 2009-10-21 03:26:51

+0

我必須在這裏與XSD驗證一致。無論如何,你「應該」擁有XSD,所以只需使用XSD驗證XML即可。如果你還沒有,它肯定會節省你的時間。 – Eduardo 2009-10-21 03:33:42

1

你可能會考慮一個XML diff工具。 MSDN上有一個免費的:XML Diff and Patch Tool

我看到你正在尋找C++工具。在這種情況下,libxmldiff可能更適合。

+0

可以輕鬆添加到自動構建過程中嗎? – cbrulak 2009-10-21 03:26:02

+0

是的,它包含一個薄包裝EXE「XmlDiff.exe」;一些信息在這裏:http://my.safaribooksonline.com/0596003978/netxml-CHP-13-SECT-2 – bobbymcr 2009-10-21 03:31:04

1

您可能會考慮使用XML單元:http://xmlunit.sourceforge.net。 它提供了JUnit擴展類,可以用來聲明XML文件的相等 。

+0

對於測試lib的建議,知道任何在C++和/或GoogleTest中的工作? – cbrulak 2009-10-21 03:42:07

2

在過去,我走近這兩種方式:

比較對存儲在測試文件中的字符串結果的XML文件。這很容易實現,除非您想要爲測試目的生成xml文件的變體,否則字符串比較方法可以正常工作。

如果您有xml文件編寫器和閱讀器,您可以將原件與往返行程結果進行比較。

我同意你的看法,你不應該複製邏輯來生成測試函數中的文件,只是爲了測試的目的。另外,我會盡量避免寫入文件系統 - 這是對文件系統的不必要依賴,並且可能會導致運行測試速度變慢。