2009-01-30 78 views
0

我想比較使用XMLUnit 1.2的2個XML文件。我正在使用RecursiveElementNameAndTextQualifier()限定符。使用XMLUnit比較XML RecursiveElementNameAndTextQualifier

當在我的XML中更改某些實體順序的順序時,它會導致XMLUnit在某些情況下傳遞並在其他情況下失敗。

我的XML文件看起來像這樣,我將它與一個類似的副本進行比較,只需對一個屬性對等進行簡單的位置交換即可。

<root> 
    <ent> 
    <value> 
    <int>1</int> 
    </value> 
    <value> 
    <int>2</int> 
    </value> 
    </ent> 
    <ent> 
    <value> 
    <int>3</int> 
    </value> 
    <value> 
    <int>4</int> 
    </value> 
    </ent> 
</root> 

當用int:2交換int:1時,在其中一個XML文件中,測試失敗。但是當用int:3交換int:4時,它會一直傳遞。

這裏是我的測試代碼:

public void testRecursiveElement() throws Exception { 

InputSource xml1 = new InputSource("xml1.xml"); 
InputSource xml2 = new InputSource("xml2.xml"); 

Diff myDiff = new Diff(xml1, xml2); 
myDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier()); 

assertXMLEqual("Not similar", myDiff, true); 
} 

你能不能指點什麼問題,爲什麼不XMLUnit測試在第一種情況下,而不是在第二種情況下檢測出差異。有沒有解決這個問題的方法?

回答

0

我試圖重現您描述的行爲,但沒有成功。當使用RecursiveElementNameAndTextQualifier時,元素的順序似乎並不重要。所以既不交換int:1和int:2,也不交換int:3和int:4導致我的測試中出現斷言錯誤。

我不知道您期望的行爲,但將RecursiveElementNameAndTextQualifier更改爲ElementNameAndTextQualifier導致交換案例的斷言錯誤。