测试java中两个dom元素是否相等

时间:2010-12-20 02:20:55

标签: java unit-testing dom element

有没有办法测试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断言错误。

我使用的节点是彼此的精确复制,具有相同的子节点列表和值。

谢谢, 索尼

2 个答案:

答案 0 :(得分:2)

您可以使用XmlUnit http://xmlunit.sourceforge.net/来测试xml值。

答案 1 :(得分:1)

根据java doc:public boolean isEqualNode(Node arg);

  

它测试两个节点是否相等。   此方法测试相等性   节点,而不是相同(即,是否   两个节点是对同一个节点的引用   对象)可以测试   Node.isSameNode()。 所有节点   但是,同样也是平等的   相反的情况可能并非如此。

在您喜欢的IDE中打开调试会话,并检查n1n2n1.isEqualNode(n2)的对象ID是相同还是不同。

如果您正在寻找相同的节点,请尝试使用public boolean isSameNode(Node other);