С XMLUnit 2 как вы сравниваете два документа без учета порядка элементов?Сравнение XML-игнорирования элемента порядка
У меня есть this question for XMLUnit 1, но, видимо, новый API в v2 больше не имеет указанного метода.
Это мой текущий код:
Diff diff = DiffBuilder.compare(expected)
.withTest(actual)
.ignoreComments()
.ignoreWhitespace()
.checkForSimilar()
.build();
assertFalse(diff.hasDifferences());
Редактировать Стефану Bodewigs комментарий:
Эти две строки я сравнить с выше фрагменте кода:
String expected = "<root><foo>FOO</foo><bar>BAR</bar></root>";
String actual = "<root><bar>BAR</bar><foo>FOO</foo></root>";
в отчётном файлов изменений
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)
Новый API должен игнорировать порядок элементов по умолчанию (это то, что 'DifferenceEvaluators.DEFAULT' делает). Вы уверены, что это разница, которую вы видите, а не что-то еще? –
Я воспроизвел проблему OP, даже когда я добавил .checkForSimilar(). Это противоречит документации по адресу https://github.com/xmlunit/user-guide/wiki/DifferenceEvaluator#default-differenceevaluator Добавление описанного ниже .withNodeMatcher() решает проблему. –