我正在尝试编写一个应用程序的自动测试,该应用程序基本上将自定义消息格式转换为XML消息,并将其发送到另一端。我有一组很好的输入/输出消息对,所以我所需要做的就是发送输入消息,并侦听XML消息从另一端出来
当需要比较实际输出和预期输出时,我遇到了一些问题。我的第一个想法就是对预期消息和实际消息进行字符串比较。这样做效果不太好,因为我们的示例数据的格式并不总是一致的,而且XML名称空间经常使用不同的别名(有时根本不使用名称空间)
我知道我可以解析两个字符串,然后自己遍历每个元素并比较它们,这不会太困难,但我觉得有更好的方法或库可以利用
因此,归结起来,问题是:
给定两个都包含有效XML的Java字符串,如何确定它们在语义上是否等价?如果您有办法确定差异是什么,则可获得额外积分
听起来像是XMLUnit的工作
- http://www.xmlunit.org/
- https://github.com/xmlunit
例如:
公共类SomeTest扩展了XMLTestCase{
@试验
公开无效测试(){
字符串xml1=。。。
字符串xml2=。。。
setIgnoreWhitespace(true);//忽略空格差异
//还可以比较xml文档、输入源、读取器和差异
assertXMLEquals(xml1,xml2);//assertXMLEquals来自XMLTestCase
}
}