XUnit

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

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

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

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

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

 Jim Garrison18 янв. 2011 г., 21:23
Если вам нужна помощь, вам придется отредактировать свой пост, чтобы включить (а) ваш код, показывающий, как вы его создалиDiff и вызвалDiff.similar()и (б) минимальный пример XML, который демонстрирует то, что вы воспринимаете как неправильный вывод.

Ответы на вопрос(5)

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

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

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

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

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

    Diff diff = new Diff(controlXml, responseXml);
    diff.overrideElementQualifier(new ElementNameAndAttributeQualifier());

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

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

XMLUnit.setIgnoreWhitespace(true);
 Somatik22 авг. 2011 г., 15:29
Это одна из основных проблем, возникающих у меня с XMLUnit, статическая настройка, которая влияет на их влияние друг на друга. Я бы предпочел увидеть эти вызовы на объекте Diff.

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

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

Ваш ответ на вопрос