我正在尝试使用XMLUnit 1.2比较2个XML文件。我正在使用RecursiveElementNameAndTextQualifier()限定符。
在我的XML中更改某些实体顺序的顺序时,会导致XMLUnit传递某些情况并在其他情况下失败。
我的XML文件看起来像这样,我将它与一个类似的副本进行比较,其中一个属性的一个对等点的位置交换很简单。
<root>
<ent>
<value>
<int>1</int>
</value>
<value>
<int>2</int>
</value>
</ent>
<ent>
<value>
<int>3</int>
</value>
<value>
<int>4</int>
</value>
</ent>
</root>
当使用int:2交换int:1时,在其中一个XML文件中,测试失败。但是当使用int:3交换int:4时,它会继续传递。
这是我的测试代码:
public void testRecursiveElement() throws Exception {
InputSource xml1 = new InputSource("xml1.xml");
InputSource xml2 = new InputSource("xml2.xml");
Diff myDiff = new Diff(xml1, xml2);
myDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier() );
assertXMLEqual("Not similar", myDiff, true);
}
你能说明问题是什么,为什么XMLUnit在第一种情况下检测差异而不是在第二种情况下检测差异。有没有解决这个问题的方法?
答案 0 :(得分:0)
我试图重现你描述但没有成功的行为。使用RecursiveElementNameAndTextQualifier时,元素的顺序似乎并不重要。所以既不交换int:1和int:2,也不交换int:3和int:4导致我的测试中出现断言错误。
我不知道您期望哪种行为,但将RecursiveElementNameAndTextQualifier更改为ElementNameAndTextQualifier导致两个交换案例的断言错误。