1

生成された XML ファイルを XMLunit を使用した別の例と比較していますが、ChildNodes の順序とその属性に問題があります。(LinuxとMacの世代は異なります)

これは私が試したことです:

@Test
public void testComparingXML() throws Exception {
    XMLUnit.setIgnoreWhitespace(true);
    String expectedXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(EXPECTED_XML));
    String actualXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(ACTUAL_XML));
    Diff diff = new Diff(expectedXml, actualXml);
    diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
    DetailedDiff detailedDiff = new DetailedDiff(diff);
    assertTrue(detailedDiff.toString(), detailedDiff.similar());
}

RecursiveElementNameAndTextQualifier クラスを使用すると問題が解決する可能性があることを読みましたが、それでも機能しません。

XML 比較の失敗の例を示す画像を次に示します: 倒立 (全画面表示の場合は新しいタブで開きます) c:

ご覧のとおり、両方の子ノードが反転しています

事前に TY. ファン

4

1 に答える 1

4

デフォルト以外を使用することElementQualifierは正しい解決策ですが、RecursiveElementAndTextQualifier確かに必要なことはしません。

一見すると、要素の名前とcaption属性の値を調べることで、一致する要素を見つけることができるように見えます。これが正しければ、ElementNameAndAttributeQualifierコンストラク"caption"ター引数として渡されたものでうまくいくはずです。

XMLUnit にはさらに多くのオプションが組み込まれています。最悪の場合ElementQualifier、既存のオプションのどれもニーズに合わない場合、自分でインターフェイスを実装する必要があります。

于 2015-02-24T05:16:45.033 に答える