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
,