Mit XMLUnit 2 wie vergleicht man zwei Dokumente, ohne die Reihenfolge der Elemente zu berücksichtigen?XML-Ignorierelement-Reihenfolge vergleichen
Ich habe this question for XMLUnit 1, aber anscheinend hat die neue API in v2 die erwähnte Methode nicht mehr.
Dies ist mein aktueller Code:
Diff diff = DiffBuilder.compare(expected)
.withTest(actual)
.ignoreComments()
.ignoreWhitespace()
.checkForSimilar()
.build();
assertFalse(diff.hasDifferences());
bearbeiten zu Stefan Bodewigs Kommentar:
Dies sind die beiden Strings i mit über Schnipsel vergleichen:
String expected = "<root><foo>FOO</foo><bar>BAR</bar></root>";
String actual = "<root><bar>BAR</bar><foo>FOO</foo></root>";
Die berichteten diffs
Expected element tag name 'foo' but was 'bar' - comparing <foo...> at /root[1]/foo[1] to <bar...> at /root[1]/bar[1] (DIFFERENT)
Expected text value 'FOO' but was 'BAR' - comparing <foo ...>FOO</foo> at /root[1]/foo[1]/text()[1] to <bar ...>BAR</bar> at /root[1]/bar[1]/text()[1] (DIFFERENT)
Expected element tag name 'bar' but was 'foo' - comparing <bar...> at /root[1]/bar[1] to <foo...> at /root[1]/foo[1] (DIFFERENT)
Expected text value 'BAR' but was 'FOO' - comparing <bar ...>BAR</bar> at /root[1]/bar[1]/text()[1] to <foo ...>FOO</foo> at /root[1]/foo[1]/text()[1] (DIFFERENT)
Das neue API sollte Element, um standardmäßig (das ist, was 'DifferenceEvaluators.DEFAULT' der Fall ist) ignorieren. Sind Sie sicher, dass dies der Unterschied ist, den Sie sehen, und nichts anderes? –
Ich replizierte OP-Problem, auch wenn ich .checkForSimilar() hinzugefügt. Dies scheint der Dokumentation unter https://github.com/xmlunit/user-guide/wiki/DifferenceEvaluator#default-differenceevaluator zu widersprechen. Das Hinzufügen des unten beschriebenen .withNodeMatcher() löste das Problem. –