8

有谁知道是否存在类似 XMLUnit for C++ 的东西?我正在寻找一种简单的方法来检查 XML 输出中的节点、值等。我们在 Visual Studio 中使用 Google 测试,但我想任何使工作更容易的库就足够了。

我使用 Xerces 作为 XML 解析器,但 XMLUnit ( http://xmlunit.sourceforge.net/ ) 有一些封装在 XML 解析器上的特性,这些特性对于单元测试非常有用。例如,使用 XPath 表达式的断言、比较两个“相似”XML 的函数等。

4

6 回答 6

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

对于验证,您需要设置一个错误处理程序,如此处所述,并将其合并到您的测试用例中:

在 Xerces C++ 中验证文档

对于 XSLT 转换检查,您需要使用 Xalan。它适用于 Xerces,所以我预计不会有任何重大困难:

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

我找不到任何在 C++ 中打包类似 XMLUnit 的操作的明显产品。所以答案是我认为你必须自己动手。祝你好运。

于 2013-01-11T16:58:31.297 回答
0

我真的很喜欢http://pugixml.org/

它:

  • 是稳定的
  • 非常快
  • 有很好的文档和示例代码
  • 在 MIT 许可下获得许可
  • 对 STL 非常友好
  • 仍然是一个相当活跃的项目
  • 对xpath有很大的支持
于 2012-07-31T23:30:17.213 回答
-1

You can use tinyxml package here: tinyxml

I'm working with it and it's quite friendly and bug free.

It's an xml handling. I guess it wasn't designed for unit testing, but you can use it to check/test your xml files. It as expected loads the xml into a DOM object and supplies a nice API to run on the nodes.

Gal

于 2009-02-16T16:11:00.427 回答
-1

Xerces at http://xerces.apache.org/xerces-c/i pretty full featured, has a C++ interface and produces good error messages, which several other XML parsers don't do so well. Having said that, it's pretty big & I've wound up using my own wrapper round the C parser Expat.

于 2009-02-16T16:17:36.103 回答
-1

我目前正在将 libxml++ 用于我的个人项目。

于 2009-02-19T01:45:15.800 回答
-1

我将 Boost property_tree 用于 xml,易于使用,非常健壮,并且与 Boost 单元测试框架配合得很好。

于 2012-07-31T17:48:48.040 回答