题
我正在编写几个生成XML文件的类。 (目前的详细信息可能并不重要)。
我想知道最好的测试策略是。
- 我不想重写XML生成代码只是为了比较输出,当我可以将文件写入磁盘并在某些里程碑上进行比较时(XML规范不会经常更改,例如每对两次或两次年)
- 我更感兴趣地测试体系结构的行为,而不是Getters&Setters
想到的选项:
- 在测试环境中重建XML文件并比较字符串表示
- 手动检查结果(写入文件等)
- 在测试环境中重建内存中的XML文件并比较内存元素。
虚拟奖励如果您知道C ++和/或Google测试的任何库。
想法?
解决方案
您是否考虑过使用XSD并将XML验证为XSD?您没有提及您正在测试的内容或结构(可能两者都)。
如果验证,它将测试XML的结构,将符合所需的结构。
其他提示
过去,我已经接近了这两种方法:
将XML文件与测试文件中的字符串存储的结果进行比较。这很容易实现,除非您想生成XML文件的变体以进行测试,否则字符串比较方法可以正常工作。
如果您拥有XML文件作家和读者,则可以将原始结果与往返结果进行比较。
我同意您的观点,您不应该复制逻辑以在测试功能中生成文件,而只是为了进行测试。另外,我将尽力避免将需要写入文件系统 - 这是对文件系统的不必要依赖性,并且可能导致运行测试较慢。
您可以考虑使用XML单元: http://xmlunit.sourceforge.net。它提供了可以用来断言XML文件平等的JUNIT扩展类。
您可以考虑使用XML DIFF工具。 MSDN上有一个免费的: XML差异和补丁工具.
我看到您正在寻找C ++工具。在这种情况下, libxmldiff 可能更合适。
不隶属于 StackOverflow