Testing strategies 测试策略:生成XML文件

Testing strategies 测试策略:生成XML文件,testing-strategies,Testing Strategies,我正在编写几个生成xml文件的类。(目前细节可能并不重要) 我想知道最好的测试策略是什么 我不想为了比较输出而重新编写xml生成代码,因为我可以将文件写入磁盘并在某些里程碑处进行比较(xml规范不会经常更改,比如每两年更改一次或两次) 我更感兴趣的是测试体系结构的行为,而不是getter和setter 想到的选项: 在测试环境中重建xml文件并比较字符串表示 手动检查结果(写入文件等) 在测试环境中重建内存中的xml文件,并比较内存中的元素 < P >虚拟奖金,如果你知道任何库的C++和

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

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

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

  • 在测试环境中重建xml文件并比较字符串表示
  • 手动检查结果(写入文件等)
  • 在测试环境中重建内存中的xml文件,并比较内存中的元素
< P >虚拟奖金,如果你知道任何库的C++和/或谷歌测试。
想法

您是否考虑过使用XSD并向XSD验证您的XML?您没有提到您测试的是内容还是结构(可能两者都有)。

如果它被验证,它将测试XML的结构将符合所需的结构。

你可以考虑一个XML差异工具。MSDN上有一个免费的


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

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

过去我有两种方法:

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

在有xml文件编写器和读取器的情况下,可以将原始结果与往返结果进行比较


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

可以轻松地将其添加到自动生成过程中吗?是的,它包含一个薄包装EXE“XmlDiff.EXE”;这里有一些信息:测试两者,通过XSD验证似乎也是一个好主意。(+1)我必须在这里同意XSD验证。无论如何,您“应该”拥有XSD,所以只需使用XSD验证XML即可。如果你还没有,它肯定会节省你的时间。1的测试LIB的推荐,知道C++和/或GoGoLeST中的任何工作吗?我编辑了我的答案,包括一个C++库。