Стратегии тестирования: генерирование XML -файла

StackOverflow https://stackoverflow.com/questions/1598558

  •  22-09-2019
  •  | 
  •  

Вопрос

Я пишу пару классов, которые генерируют XML -файл. (Детали, вероятно, не важны в данный момент).

Мне интересно, что лучшая стратегия тестирования - это.

  • Я не хочу переписывать код генерации XML только для сравнения вывода, когда я мог бы написать файл с диском и сравнить его на определенных этапах (спецификация XML не будет изменяться часто, как один или два раза каждую пару годы)
  • Меня больше заинтересован в проверке поведения архитектуры вместо Getters & Setters

Варианты, которые приходят на ум:

  • Восстановление XML -файла в среде тестирования и сравнение строковых представлений
  • Проверка результата вручную (написание в файл и т. Д.)
  • Восстановление XML-файла в памяти в среде тестирования и сравнение элементов в памяти.

Виртуальный бонус, если вы знаете какие -либо библиотеки для C ++ и/или Google Test.

Идеи?

Это было полезно?

Решение

Рассматривали ли вы использование XSD и подтверждение вашего XML в XSD? Вы не упомянули, был ли это содержание или структуру, на которую вы тестировали (вероятно, оба).
Если он подтвердит, он проверит структуру XML, будет соответствовать требуемой структуре.

Другие советы

В прошлом я приближался к этим двум способам:

Сравните файл XML с результатом, хранящимся в виде строки в тестовом файле. Это легко реализовать, и если вы не хотите генерировать вариации файла XML для целей тестирования, метод сравнения строк работает нормально.

В случае, когда у вас есть писатель и читатель XML, вы можете сравнить оригинал с результатом обработки туда и результатом.

Я согласен с вами в том, что вы не должны повторять логику, чтобы сгенерировать файл в функции тестирования, только с целью тестирования. Кроме того, я бы постарался избежать необходимости записать в файловую систему - это неотъемлемая зависимость от файловой системы, и, вероятно, приведет к более медленным запущенным тестам.

Вы можете рассмотреть возможность использования блока XML: http://xmlunit.sourceforge.netАнкет Он предоставляет классы расширения JUNIT, которые можно использовать для утверждения равенства файлов XML.

Вы можете рассмотреть инструмент XML DIFF. На MSDN есть бесплатный доступный: XML Diff и Patch Tool.

Я вижу, вы ищете инструменты C ++. В этом случае, libxmldiff может быть более подходящим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top