是否有用于测试XML文件的AssertEquals?
我经常需要测试XML文件是否正确,并且需要一种测试2个XML字符串(或文档)是否相同的方法,例如:是否有用于测试XML文件的AssertEquals?,xml,unit-testing,diff,Xml,Unit Testing,Diff,我经常需要测试XML文件是否正确,并且需要一种测试2个XML字符串(或文档)是否相同的方法,例如: XMLAssert.assertEquals(String xmlExpected, String xmlActual); 此外,显示xml文档的不同之处也很有用 这应仅限于带有standalone=“yes”的文档(即DTD或模式(如果有)不重要)。这意味着没有默认值,属性类型也不相关。相邻的文本数据节点应标准化(连接) 注意,这不能简单地通过词法比较来实现 Assert.assertEqua
XMLAssert.assertEquals(String xmlExpected, String xmlActual);
此外,显示xml文档的不同之处也很有用
这应仅限于带有standalone=“yes”的文档(即DTD或模式(如果有)不重要)。这意味着没有默认值,属性类型也不相关。相邻的文本数据节点应标准化(连接)
注意,这不能简单地通过词法比较来实现
Assert.assertEquals(xmlExpected, xmlActual);
因为呈现同一个XML信息集的方法有很多种。比较应该考虑元素和属性上的名称空间(而不是属性值,它们不是规范的一部分)
实现这一点的一种方法可能涉及规范化这两个文档。或者,也可以使用XMLDiff
我找不到几年前我自己写的东西
[我还特别需要比较浮点值,尽管这一定是一种黑客行为,因为CDATA或PCDATA的数据类型只能猜测,并且超出了问题的直接范围。]
注意:可能需要为每种语言提供特定的解决方案。我对Java和C特别感兴趣,您可以尝试使用
XmlDiffPatch.dll
来实现这一点。转到,下载“XMLDiff和补丁”,并在项目中添加对DLL的引用。我从未在实际代码中使用过它,但您可以尝试捆绑的工具XmlDiff.Exe
,看看它是否适合您的需要。对于Java,您应该签出。我刚刚注意到它也有一个.NET版本!以下是Java版本的示例:
String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>";
String myTestXML = "<msg><localId>2376</localId></msg>";
assertXMLNotEqual(myControlXML, myTestXML);
String myControlXML=“0x00435A8C”;
字符串myTestXML=“2376”;
assertXMLNotEqual(myControlXML、myTestXML);
谢谢。这当然是像我希望的那样全面,并且比我所写的更有力。很遗憾我两年前没有发现这一点