0

我将xmlunit 2.2.1与 Java 一起使用,并有以下 XML 匹配。这里的问题是双重的:

  1. 顺序不一样
  2. 一些数值可能有尾随零(例如0.250000

由于这个原因ByNameAndTextRecSelector()不起作用,因为它要求所有文本节点都完全匹配,而这里不是这种情况。我已经实现了一个DifferenceEvaluator可以处理数字中尾随零的方法。但是我用什么来选择合适的元素进行比较?

XML 1:

<test>
  <table>
    <row>
      <element>
        <code>ALPHA</code>
        <scale>0.25</scale>
      </element>
    </row>
    <row>
      <element>
        <code>DELTA</code>
        <scale>0.1</scale>
      </element>
    </row>
  </table>
</test>

XML 2:

<test>
  <table>
    <row>
      <element>
        <code>DELTA</code>
        <scale>0.1</scale>
      </element>
    </row>
    <row>
      <element>
        <code>ALPHA</code>
        <scale>0.2500000</scale>
      </element>
    </row>
  </table>
</test>
4

1 回答 1

1

元素是否code足以选择正确的节点?如果是这样,像用户指南示例https://github.com/xmlunit/user-guide/wiki/SelectingNodes#conditional-elementselectors这样的方法应该可以工作。

ElementSelectors.conditionalBuilder()
    .whenElementIsNamed("row").thenUse(ElementSelectors.byXPath("./element/code", ElementSelectors.byNameAndText))
    .elseUse(ElementSelectors.byName)
    .build();

这对不同的数字格式没有帮助。要处理它们,您必须覆盖DifferenceEvaluator并检测Text保存数字的节点,解析它们并标记差异,就EQUAL好像它们足够接近一样。

如果code还不够,那么您将需要编写一个处理我上面描述ElementSelector的数字并将其与上面的条件结合起来。DifferenceEvaluatorElementSelectors.byNameAndText

于 2016-08-12T04:18:10.007 回答