Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有用于测试XML文件的AssertEquals?_Xml_Unit Testing_Diff - Fatal编程技术网

是否有用于测试XML文件的AssertEquals?

是否有用于测试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

我经常需要测试XML文件是否正确,并且需要一种测试2个XML字符串(或文档)是否相同的方法,例如:

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);

谢谢。这当然是像我希望的那样全面,并且比我所写的更有力。很遗憾我两年前没有发现这一点