有没有人知道是否存在类似XMLUnit for C ++的东西?我正在寻找一种简单的方法来检查XML输出中的节点,值等。我们在Visual Studio中使用Google测试,但我认为任何使工作更轻松的库就足够了。
我正在使用Xerces作为XML解析器,但XMLUnit(http://xmlunit.sourceforge.net/)具有一些包含在XML解析器上的功能,这些功能对于单元测试非常有用。例如,使用XPath表达式断言,比较两个“相似”XML等的函数
答案 0 :(得分:1)
我过去曾使用Xerces和CPPUnit的组合来实现这一目标。在我的测试用例中,我将在setUp()函数中使用Xerces API创建一个DOM对象。这个DOM代表我的预期结果。在测试用例本身中,我将读取XML文件,测试中的类将填充表示文件内容的DOM对象。为了检查相等性,我将通过Xerces API(DOMTreeWalker)遍历两个DOM树,并在比较DOM节点的内容时使用CPPUnit断言。这有点单调乏味,但当时没有可以模仿XmlUnit的框架。我认为Google Test和CPPUnit一样可以完成这项任务。
Xerces API对XPath表达式有一些支持:
http://xerces.apache.org/xerces-c/faq-parse-3.html#faq-2
对于验证,您需要设置此处提到的错误处理程序并将其合并到您的测试用例中:
Validating document in Xerces C++
对于XSLT转换检查,您需要使用Xalan。它适用于Xerces所以我不会预料到任何重大困难:
http://xalan.apache.org/old/xalan-c/index.html
我无法找到任何在C ++中打包类似XMLUnit的操作的明显产品。所以答案是我认为你必须自己动手。祝你好运。
答案 1 :(得分:0)
答案 2 :(得分:-1)
您可以在此处使用tinyxml包:tinyxml
我正在使用它,它非常友好且没有bug。
这是一个xml处理。 我想它不是为单元测试而设计的,但你可以用它来检查/测试你的xml文件。 它按预期将xml加载到DOM对象中,并提供一个很好的API以在节点上运行。
半乳糖
答案 3 :(得分:-1)
http://xerces.apache.org/xerces-c/的Xerces我非常全面,有一个C ++接口并产生很好的错误消息,其他几个XML解析器做得不好。话虽如此,它还是相当大的&我已经在C解析器Expat周围使用我自己的包装器了。
答案 4 :(得分:-1)
我目前正在使用libxml ++作为我的个人项目。
答案 5 :(得分:-1)
我使用Boost property_tree for xml,易于使用,非常强大,并且与Boost单元测试框架配合良好。