2013-04-25 88 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 
相关问题