【问题标题】:Comparing XMLs using XMLUnit RecursiveElementNameAndTextQualifier使用 XMLUnit RecursiveElementNameAndTextQualifier 比较 XML
【发布时间】:2009-01-30 14:57:09
【问题描述】:

我正在尝试使用 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 在第一种情况下检测到差异,而不是在第二种情况下检测到差异。这个问题有解决办法吗?

【问题讨论】:

    标签: java xml unit-testing junit


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多