XmlUnit 2.x сравнить 2 xmls не удалось из-за разницы в префиксе пространства имен

  • Сравнение двух xmls с использованием XmlUnit 2.2.1 в Java.
  • Единственная разница между документами заключается в префиксе пространства имен.

Вот фрагмент кода для воспроизведения:

 @Test 
 public void testDifferentPrefix() {
            final String control = "<ns:a xmlns:ns='abc'><b attr=\"xyz\"></b></ns:a>";
            final String test = "<ns1:a xmlns:ns1='abc'><b attr=\"xyz\"></b></ns1:a>";

            Diff myDiff = DiffBuilder.compare(Input.fromString(control))
                              .withTest(Input.fromString(test))
                              .build();
            Assert.assertFalse(myDiff.toString(), myDiff.hasDifferences());        
}

когда вышеупомянутый тест выполняется, он терпит неудачу с нижеуказанной ошибкой:

Ожидаемый префикс пространства имен 'ns', но был 'ns1' - сравнение в /pfx:a[1] с в /pfx:a[1] junit.framework.AssertionFailedError в NewEmptyJUnitTest.testDifferentPrefix(NewEmptyJUnitTest.java:95)

Что следует исправить, чтобы избежать ошибки? Я считаю, что упускаю что-то тривиальное.

1 ответ

Решение

Не указав ни одного DifferenceEvaluator вы неявно используете DifferenceBuilders.DEFAULT для которых разные префиксы пространства имен - это "ПОХОЖИЕ" различия.

Если вы хотите игнорировать "ПОХОЖИЕ" различия, вы должны установить checkForSimilar() на DiffBuilder,

Другие вопросы по тегам