2013-04-25 41 views
1

我正在編寫一系列jUnit測試以確保我的代理Servlet從各種來源爲客戶端頁面提取XML。jUnit比較XML字符串失敗,即使XML是相同的

我的一個測試,發送到servlet來獲取XML的請求,然後將它與一個本地副本是一樣的(我認爲)

我檢查這是挺有意思的每個XML的長度。

本地副本長度= 1753

遠程版長度= 1796

我只是用一個assertTrue()

assertTrue(remote.equals(local));  

任何想法,爲什麼沒有在一個差異有沒有在jUnit中的方法我可以比較XML以確保它們是預期的並且在語法上是正確的?

歡迎任何其他建議?

+2

也許有不同的斷行字符的字符串,如一個時間'\ n \ r'和'\ N'只是在另一個字符串?如果您的XML中有43行代碼有意義:) – Uooo 2013-04-25 08:39:57

+0

嘗試解組兩個XML並比較未編組的對象。 – BobTheBuilder 2013-04-25 08:41:20

+0

@baraky;我不熟悉這種解組的概念 – kaleeway 2013-04-25 08:44:29

回答

3

關於更好的方法來比較XML的問題 - 我以前使用XMLUnit,並覺得它運作良好。

2

問題很可能是因爲您有不同的換行符,例如一個字符串中的\n和另一個字符串中的\n\r。你比較字符串之前,您可以刪除所有的換行符:

s1 = s1.replace("\n", "").replace("\r", ""); 
s2 = s2.replace("\n", "").replace("\r", ""); 
assertEquals(s1, s2); // should evaluate to true now