【问题标题】:testing strategies: generating a XML file测试策略:生成 XML 文件
【发布时间】:2009-10-21 03:17:30
【问题描述】:

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

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

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

想到的选项:

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

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

想法?

【问题讨论】:

  • 我编辑了我的答案以包含一个 C++ 库。

标签: testing-strategies


【解决方案1】:

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

【讨论】:

  • 测试两者,通过 XSD 验证似乎也是一个好主意。 (+1)
  • 我必须同意 XSD 验证。无论如何,您“应该”拥有 XSD,因此只需使用 XSD 验证 XML。如果您还没有,那肯定会节省您的时间。
【解决方案2】:

在过去,我有两种方法:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • +1 推荐测试库,知道在 C++ 和/或 GoogleTest 中工作的任何东西吗?
    【解决方案4】:

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

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

    【讨论】:

    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多