Стратегии тестирования: генерирование XML -файла
-
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 может быть более подходящим.