При модульном тестировании XML возникает ряд специфических задач, например, сравнение частей XML или сравнение без учета специальных символов. Как решить эти задачи?
Тестирование XML в Java
Лучший ответ:
Для этих целей предназначен XMLUnit.
Есть много случаев, когда программа генерирует XML данные. Документы XML используются для обмена данными между различными приложениями, веб-приложения создают (X)HTML-данные чтобы ответчать на AJAX-запросы. Во многих сценариях XML генерируется, используется и нуждается в тестировании также как любая другая часть программы.
Есть несколько подходов для тестирования сгенерированного XML и каждый из этих подходов имеет свои дефекты, когда используется отдельно от остальных.
Так, вы можете:
- провести валидацию сгенерированного XML на соответствие DTD или Schema. К сожалению, DTD и Schema могут не существовать для ваших данных, а если они и существуют, то каждый тест будет проверять только структурк данных но не содержание.
- Сравнить сгенерированные данные с ожидаемым результатом. К сожалению, одни и те же данные, представленные в виде XML, могут незначительно различаться. Например, пустые элементы могут быть представлены одним закрывающимся тегом или парой тегов. Могут быть различия в специальных символах или кодировке.
- Использовать XPath-запросы чтобы выделить части содержимого из сгенерированных документов и проводить тестирование с ними. Такой подход затруднителен, если сгенерированных данных очень много.
- Программно разбирать документ — например, при помощи объектной модели DOM — и тестировать содержимое каждого узла. Такие тесты могут стать очень специфичными и требуют серьезных изменений при изменении структуры данных.
XMLUnit — это open source проект под лицензией BSD. Он представляет собой небольшую библиотеку взаимосвязанных классов, которые упрощают каждый из перечисленных подходов к тестированию фрагментов XML. Есть API интеграции с J/NUnit, но библиотека вполне может использоваться отдельно.