0

我正在为元数据加载器进行单元测试,它采用 QDomNode 并将信息提取到 std::map 中。现在我必须创建 QDomNode 来保存我想要提取的所有信息。通常这个节点是从 xml 文件中取出的,这就是为什么我认为我可以这样做:

QDomNode metaNode()
{
  QDomDocument document;

  QByteArray metaArray(
    "<item name=\"author\">testManager</item>"
    "<item name=\"campaign\">testCampaign</item>"
    "<item name=\"comment\">testComment</item>"
    "<item name=\"date\">25.04.2013</item>"
    "<item name=\"description\">testDescription</item>"
    "<item name=\"projnum\">1</item>"
    "<item name=\"title\">test</item>");

  document.setContent(metaArray);
  QDomNode meta = document;

  return meta;
}

但这似乎不起作用。当我调用 meta.childNodes() 时,我希望得到一个包含七个项目的列表,但只得到第一个,名称为“author”,值为“testManager”;

4

2 回答 2

2

因此,在 Mat 指出我缺少一个“容器”节点之后,我尝试了它并让它工作。
这是工作代码,它使我能够像从 Xml 文件中读取节点一样使用节点(但没有文件系统依赖项):

QDomNode metaNode()
{
  QDomDocument document;

  QByteArray metaArray(
  "<metadata>"
    "<item name=\"author\">testManager</item>"
    "<item name=\"campaign\">testCampaign</item>"
    "<item name=\"comment\">testComment</item>"
    "<item name=\"date\">25.04.2013</item>"
    "<item name=\"description\">testDescription</item>"
    "<item name=\"projnum\">1</item>"
    "<item name=\"title\">test</item>"
  "</metadata>");

  document.setContent(metaArray);
  QDomNode meta = document;

  return meta;
}
于 2013-05-10T14:41:31.303 回答
0

使用实际的 test.xml 文件不会使测试更好吗?由于您实际上想要测试采用 .xml 文件并返回 QMap 的代码,我认为最好将 .xml 文件也用于测试。

于 2013-05-10T13:59:17.003 回答