2015-07-21 62 views
0

我想知道XMLUNIT是否提供了一種方法來在比較之前忽略XML中存在的一些元素。例如,如果我想忽略由服務器隨機生成的字段。是否有任何可用的開箱即用在XMLUnit中忽略certian元素還是我需要編寫自定義DifferenceListenerXMLUNIT是否提供選項來忽略XML中的某些元素進行比較?

此外,它是否提供不匹配的元素名稱?如果不是,那麼比較兩個XML的最好方法是什麼?這可以讓我忽略一些元素,並且還提供了不匹配的元素名稱/值。

回答

2

恐怕自定義DifferenceListener是現在唯一的方法。 XMLUnit2(https://github.com/xmlunit/xmlunit/issues/26)還有一項尚未實現的功能請求。

實現DifferenceListener可能有點麻煩,因爲您不僅會收到Difference s的元素,您希望忽略的元素,但很可能還會收到父元素子元素的數量。

Difference每個包含NodeDetail S代表看到的測試和對照側的節點和NodeDetail包含DOM Node(這將在您的情況下的Element)。

+0

感謝Stefan,我不想在這裏寫任何複雜的東西,因爲我正在編寫單元測試的代碼(測試SOAP webservice響應。)您是否認爲,有任何其他方式可以確定所有元素在比較之後,我可以放入測試用例報告中的已經過期和實際的XML中不匹配(我們不再需要忽略元素) – Torukmakto

+0

對於延遲,Torukmakto很抱歉。不使用'DetailedDiff'會給你所有的差異(可能多於一個差異對象,因爲缺失節點會導致他們的父母不同)。 –

相關問題