0

私はJavaでxmlunit 2.2.1を使用しており、一致する次のXMLがあります。ここでの問題は 2 つあります。

  1. 順序は同じではありません
  2. 一部の数値には末尾のゼロが含まれる場合があります (例: 0.250000)

すべてのテキストノードが完全に一致する必要があるため、この理由ByNameAndTextRecSelector()では機能しませんが、ここではそうではありません。DifferenceEvaluator数値の末尾のゼロを処理する を既に実装しています。しかし、比較する適切な要素を選択するには何を使用すればよいでしょうか?

XML1:

<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>

XML2:

<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のように数値を処理するを記述し、それを上記の条件内DifferenceEvaluatorと組み合わせる必要があります。ElementSelectors.byNameAndText

于 2016-08-12T04:18:10.007 に答える