0

我正在尝试使用 XMLUnit 1.2 比较 2 个 XML 文件。我正在使用 RecursiveElementNameAndTextQualifier() 限定符。

在我的 XML 中更改某些实体 order 的 order 时,它会导致 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>  

在其中一个 XML 文件中将 int: 1 与 int: 2 交换时,测试失败。但是当用 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 在第一种情况下检测到差异而不是在第二种情况下检测到差异。这个问题有什么解决办法吗?

4

1 回答 1

0

我试图重现您描述的行为,但没有成功。使用 RecursiveElementNameAndTextQualifier 时,元素的顺序似乎并不重要。因此,无论是交换 int:1 和 int:2,还是交换 int:3 和 int:4,都不会在我的测试中导致断言错误。

我不知道您会期望哪种行为,但是将 RecursiveElementNameAndTextQualifier 更改为 ElementNameAndTextQualifier 会导致两种交换情况的断言错误。

于 2009-02-10T09:42:07.560 回答