0

我正在编写几个生成 xml 文件的类。(目前细节可能并不重要)。

我想知道最好的测试策略是。

  • 我不想重写 xml 生成代码只是为了比较输出,当我可以将文件写入磁盘并在某些里程碑进行比较时(xml 规范不会经常更改,例如每两次更改一次或两次年)
  • 我对测试架构的行为而不是 getter 和 setter 更感兴趣

想到的选项:

  • 在测试环境中重建xml文件并比较字符串表示
  • 手动检查结果(写入文件等)
  • 在测试环境中重建内存中的 xml 文件并比较内存中的元素。

如果您知道 C++ 和/或 Google Test 的任何库,虚拟奖励。

想法?

4

4 回答 4

3

您是否考虑过使用 XSD 并将您的 XML 验证到 XSD?您没有提及您要测试的是内容还是结构(可能两者兼而有之)。
如果验证通过,它将测试 XML 的结构是否符合要求的结构。

于 2009-10-21T03:21:05.147 回答
2

在过去,我采用了两种方法:

将 xml 文件与测试文件中存储为字符串的结果进行比较。这很容易实现,除非您想为测试目的生成 xml 文件的变体,否则字符串比较方法可以正常工作。

如果您有一个 xml 文件写入器和读取器,您可以将原始文件与往返结果进行比较。

我同意你的观点,你不应该为了测试的目的而在测试函数中复制生成文件的逻辑。另外,我会尽量避免写入文件系统的需要——这是对文件系统的不必要的依赖,并且可能会导致运行测试变慢。

于 2009-10-21T03:38:00.323 回答
1

您可能会考虑使用 XML 差异工具。MSDN 上有一个免费的:XML Diff and Patch Tool

我看到您正在寻找 C++ 工具。在这种情况下,libxmldiff可能更合适。

于 2009-10-21T03:25:24.747 回答
1

您可以考虑使用 XML 单元:http: //xmlunit.sourceforge.net。它提供了 JUnit 扩展类,可用于断言 XML 文件的相等性。

于 2009-10-21T03:36:16.380 回答