Есть ли альтернативы XmlUnit? - PullRequest
15 голосов
/ 18 января 2011

Мне нужно различать большие структуры каталогов, содержащие сгенерированные файлы .xml и .wsdl.Сгенерированные файлы .xml отличаются в порядке появления дочерних элементов.Предполагается, что метод XmlUnit Diff.s Similar () обрабатывает этот случай:

'Два документа считаются «похожими», если они содержат одинаковые элементы и атрибуты независимо от порядка.'

Это не тот случай, однако.Я взял файл .xml, изменил порядок двух дочерних элементов, и XmlUnit говорит, что они не похожи.

XmlUnit не работает, предоставляя не больше функциональности, чем встроенная утилита diff.

* 1008Есть ли альтернатива XmlUnit, которая распознает простые различия в XML-файлах, такие как упорядочение дочерних элементов?

Ответы [ 5 ]

5 голосов
/ 05 июля 2011

У меня похожая проблема, в моем случае у меня было несколько тегов с одинаковыми именами, но разными атрибутами (порядок не имеет значения), но XmlUnit всегда проверял сначала первое, второе и второе ... это моглопоменяться местами.У меня вопрос был:

Сравнение похожих xml-файлов с XmlUnit с неупорядоченными тегами (одно и то же имя тега с различными атрибутами)

Я нашел решение здесь:

http://www.infoq.com/articles/xml-unit-test

В моем случае это было решено путем переопределения квалификатора элемента:

    Diff diff = new Diff(controlXml, responseXml);
    diff.overrideElementQualifier(new ElementNameAndAttributeQualifier());
3 голосов
/ 17 мая 2011

Я обнаружил, что установка следующей опции решает проблему неточного (не) сходства:

XMLUnit.setIgnoreWhitespace(true);
1 голос
/ 31 мая 2011

Лучше отсортировать XML, прежде чем сравнивать его с xmlunit, вместо того, чтобы использовать собственную сортировку xmlunit, это будет намного проще, чем конфигурировать xmlunit для ваших нужд

1 голос
/ 23 февраля 2011

Я согласен с комментарием Джима.Большинство проблем, с которыми я столкнулся с XmlUnit, было связано с неправильной инициализацией.

Однако вы всегда можете взглянуть на исходный код XMLUnit и заменить обработчик Diff своим, если считаете, что реализация не выполняет то, что вам нужно.Код довольно прост для понимания, и вы сможете полностью контролировать поведение без особых усилий, необходимых для реализации вашего собственного механизма сравнения.

0 голосов
/ 23 февраля 2011

вы пробовали XUnit ?

...