Тестирование XML в Java - CodeHelper

Тестирование XML в Java

1

При модульном тестировании XML возникает ряд специфических задач, например, сравнение частей XML или сравнение без учета специальных символов. Как решить эти задачи?

Лучший ответ:

1

Для этих целей предназначен XMLUnit.

Есть много случаев, когда программа генерирует XML данные. Документы XML используются для обмена данными между различными приложениями, веб-приложения создают (X)HTML-данные чтобы ответчать на AJAX-запросы. Во многих сценариях XML генерируется, используется и нуждается в тестировании также как любая другая часть программы.

Есть несколько подходов для тестирования сгенерированного XML и каждый из этих подходов имеет свои дефекты, когда используется отдельно от остальных.

Так, вы можете:

  • провести валидацию сгенерированного XML на соответствие DTD или Schema. К сожалению, DTD и Schema могут не существовать для ваших данных, а если они и существуют, то каждый тест будет проверять только структурк данных но не содержание.
  • Сравнить сгенерированные данные с ожидаемым результатом. К сожалению, одни и те же данные, представленные в виде XML, могут незначительно различаться. Например, пустые элементы могут быть представлены одним закрывающимся тегом или парой тегов. Могут быть различия в специальных символах или кодировке.
  • Использовать XPath-запросы чтобы выделить части содержимого из сгенерированных документов и проводить тестирование с ними. Такой подход затруднителен, если сгенерированных данных очень много.
  • Программно разбирать документ — например, при помощи объектной модели DOM — и тестировать содержимое каждого узла. Такие тесты могут стать очень специфичными и требуют серьезных изменений при изменении структуры данных.

XMLUnit — это open source проект под лицензией BSD. Он представляет собой небольшую библиотеку взаимосвязанных классов, которые упрощают каждый из перечисленных подходов к тестированию фрагментов XML. Есть API интеграции с J/NUnit, но библиотека вполне может использоваться отдельно.

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.