XMLUnit для C ++ - PullRequest
       15

XMLUnit для C ++

8 голосов
/ 05 февраля 2009

Кто-нибудь знает, существует ли что-то вроде XMLUnit для C ++? Я ищу простой способ проверки узлов, значений и т. Д. В выводе XML. Мы используем тест Google в Visual Studio, но, полагаю, любой библиотеки, которая облегчит работу, будет достаточно.

Я использую Xerces в качестве синтаксического анализатора XML, но XMLUnit (http://xmlunit.sourceforge.net/) имеет некоторые функции, обернутые в синтаксический анализатор XML, которые очень полезны для модульного тестирования. Например, утверждает с помощью выражений XPath, функции для сравнения двух " похожие "XML-файлы" и т. д.

Ответы [ 6 ]

1 голос
/ 11 января 2013

Я использовал комбинацию Xerces и CPPUnit для достижения этой цели в прошлом. В моих тестовых случаях я создал бы объект DOM с API Xerces в функции setUp (). Этот DOM будет представлять мои ожидаемые результаты. В самом тестовом примере я бы затем прочитал файл XML, а тестируемый класс заполнил бы объект DOM, представляющий содержимое файла. Чтобы проверить равенство, я бы прошел через два дерева DOM через API Xerces (DOMTreeWalker) и использовал утверждения CPPUnit, когда сравнивал содержимое узлов DOM. Это было немного утомительно, но в то время не было доступных фреймворков, которые могли бы имитировать XmlUnit. Я полагаю, что Google Test будет работать так же хорошо, как CPPUnit для выполнения этой задачи.

API Xerces имеет некоторую поддержку выражений XPath:

http://xerces.apache.org/xerces-c/faq-parse-3.html#faq-2

Для проверки вам необходимо настроить обработчик ошибок, как упомянуто здесь, и включить его в ваш тестовый пример:

Проверка документа в Xerces C ++

Для проверки XSLT-преобразования вам понадобится Xalan. Он работает с Xerces, поэтому я не ожидаю каких-либо серьезных трудностей:

http://xalan.apache.org/old/xalan-c/index.html

Мне не удалось найти какие-либо очевидные продукты, которые упаковывали XMLUnit-подобные операции в C ++. Таким образом, ответ, я думаю, вам придется свернуть свой собственный. Удачи.

0 голосов
/ 01 августа 2012

Мне очень нравится http://pugixml.org/

Она:

  • стабильно
  • очень быстро
  • имеет отличную документацию и пример кода
  • лицензируется по лицензии MIT
  • очень подходит для STL
  • все еще довольно активный проект
  • имеет отличную поддержку xpath
0 голосов
/ 31 июля 2012

Я использую Boost property_tree для XML, прост в использовании, довольно надежен и хорошо работает с платформой модульного тестирования Boost.

0 голосов
/ 19 февраля 2009

В настоящее время я использую libxml ++ для своего личного проекта.

0 голосов
/ 16 февраля 2009

Xerces at http://xerces.apache.org/xerces-c/i довольно полнофункциональный, имеет интерфейс C ++ и выдает хорошие сообщения об ошибках, что не так хорошо делают некоторые другие анализаторы XML. Сказав это, он довольно большой, и я завел свою собственную обертку вокруг синтаксического анализатора C Expat .

0 голосов
/ 16 февраля 2009

Вы можете использовать пакет tinyxml здесь: tinyxml

Я работаю с ним, и это довольно дружелюбно и без ошибок.

Это обработка XML. Я думаю, что он не предназначен для модульного тестирования, но вы можете использовать его для проверки / тестирования ваших файлов XML. Как и ожидалось, он загружает xml в объект DOM и предоставляет хороший API для работы на узлах.

Gal

...