有没有办法测试Java中两个dom元素是否完全相同?
在JUnit Testing中测试两个元素之间的相等性的最佳方法是什么。如果有一个java方法来测试两个dom元素之间的相等性,那么也许我可以在这个java方法上使用assertTrue。那会有用吗?
假设我有两个dom节点,n1和n2我在junit测试中尝试了以下内容:
assertTrue(n1.isEqualNode(n2));
请参阅我的测试打印声明的结果
node n1 is: <?xml version="1.0" encoding="UTF-8"?><user trust="false"><userid>user</userid><password>70A0C520F974F76D994779C92326BEFFDECC344B</password><username>sony</username><organization>org</organization></user>
node n2 is: <?xml version="1.0" encoding="UTF-8"?><user trust="false">
<userid>user</userid>
<password>70A0C520F974F76D994779C92326BEFFDECC344B</password>
<username>sony</username>
<organization>org</organization>
</user>
这会引发java断言错误。
我使用的节点是彼此的精确复制,具有相同的子节点列表和值。
谢谢, 索尼
答案 0 :(得分:2)
您可以使用XmlUnit http://xmlunit.sourceforge.net/来测试xml值。
答案 1 :(得分:1)
根据java doc:public boolean isEqualNode(Node arg);
它测试两个节点是否相等。 此方法测试相等性 节点,而不是相同(即,是否 两个节点是对同一个节点的引用 对象)可以测试 Node.isSameNode()。 所有节点 但是,同样也是平等的 相反的情况可能并非如此。
在您喜欢的IDE中打开调试会话,并检查n1
中n2
和n1.isEqualNode(n2)
的对象ID是相同还是不同。
如果您正在寻找相同的节点,请尝试使用public boolean isSameNode(Node other);
。