Есть ли у XMLUnit утверждение для игнорирования пробелов

#java #junit #xmlunit

#java #junit #xmlunit

Вопрос:

Я хочу сравнить две строки xml в тесте, но тест продолжает завершаться неудачей из-за пробелов.

 @Test
public void testForEquality() throws Exception {
 String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>";
 String myTestXML = "<msg><uuid>0x00435A8C</uuid>      </msg>";
 assertXMLEqual(myControlXML, myTestXML);
 Diff diff = new Diff(myControlXML, myTestXML);
 assertTrue(diff.similar());
}
  

Комментарии:

1. Думаю, мне следовало поискать еще 5 минут XMLUnit.setIgnoreWhitespace(true);

Ответ №1:

Да, XMLUnit может игнорировать пробелы. Подробности см. в документации по API. Вы можете включить его, установив:

 XMLUnit.setIgnoreWhitespace(true)
  

Ответ №2:

API изменился с помощью XMLUnit 2.x.

Теперь для модульных тестов вы можете игнорировать пробелы с помощью средства сопоставления hamcrest следующим образом:

 import static org.hamcrest.MatcherAssert.assertThat;
import static org.xmlunit.matchers.CompareMatcher.isIdenticalTo;
...
assertThat(actual, isIdenticalTo(expected).ignoreWhitespace());
  

Или, альтернативно, с помощью builder API напрямую:

 import org.xmlunit.builder.DiffBuilder;
...
boolean areDifferent = DiffBuilder.compare(left).withTest(right)
                                  .ignoreWhitespace().build().hasDifferences();