【问题标题】:jUnit comparing XML strings fails even though the XMLs are the same即使 XML 相同,jUnit 比较 XML 字符串也会失败
【发布时间】:2013-04-19 01:43:36
【问题描述】:

我正在编写一系列 jUnit 测试,以确保我的代理 Servlet 从各种来源获取客户端页面的 XML。

我的一个测试向 servlet 发送请求以获取 XML,然后将其与相同的本地副本进行比较(我认为)

我检查了每个 XML 的长度,这很有趣。

本地副本长度 = 1753

远程版本长度 = 1796

我只是在使用 assertTrue()

assertTrue(remote.equals(local));       

任何想法为什么长度会有所不同,在 jUnit 中有没有办法我可以比较 XML 以确保它们是预期的并且在语法上是正确的?

欢迎提出其他建议?

【问题讨论】:

  • 也许字符串中有不同的换行符,比如有一次\n\r\n 只在另一个字符串中?如果您的 XML 中有 43 行,那将是有意义的 :)
  • 尝试解组两个 XML 并比较解组的对象。
  • @baraky ;我不熟悉这种解组的概念

标签: java xml servlets junit


【解决方案1】:

关于您比较 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多