2015-02-23 3 views
1

Я сравниваю сгенерированный XML-файл с другим примером с использованием XMLunit, а у Im возникают проблемы с Order ChildNodes и их атрибутами. (поколение Linux и Mac отличаются)Ошибка сопоставления XMLunit, так как порядок дочерних узлов

Это то, что я пробовал:

@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: inverted (открыть в новой вкладке для полного экрана) с:

Как вы можете видеть, как дочерние узлы перевернуты

TY заранее. Juan

ответ

4

Использование нестандартного ElementQualifier является правильным решением, но RecursiveElementAndTextQualifier, безусловно, не делает то, что вам нужно.

На первый взгляд кажется, что можно найти соответствующие элементы, посмотрев на имя элемента и значение атрибута caption. Если это правильно, то ElementNameAndAttributeQualifier с "caption", переданный в качестве аргумента конструктора, должен сделать трюк.

В XMLUnit больше возможностей, в худшем случае вам необходимо реализовать интерфейс ElementQualifier, если ни один из существующих вариантов не соответствует вашим потребностям.

+0

Большое спасибо! Это сработало –

Смежные вопросы