很久以前,我不得不测试一个生成 postscript 文件图像的程序。确定程序是否产生正确的预期输出的一种快速方法是对结果进行 md5 以与我事先检查的“已知良好”输出的 md5 进行比较。
不幸的是,Postscript 包含文件中的当前时间。当然,这个时间会根据测试运行的时间而有所不同,因此即使获得了预期的输出,也会改变结果的 md5。作为修复,我只是用 sed 去掉了日期。
这是一个美好而简单的场景。我们并不总是那么幸运。例如,现在我正在编写一个编写器程序,它创建一个包含一堆匿名节点和 uuid 的大型 RDF 文件。用一个简单的 md5 基本上不可能检查整个程序的功能,唯一的办法就是用阅读器读取文件,然后通过这个阅读器验证输出。正如您可能意识到的那样,这打开了一个新的蠕虫罐:首先,您必须编写一个阅读器(这可能很耗时),其次,您假设阅读器在功能上是正确的,同时与编写器同步。如果读取器和写入器同步,但假设不正确,读取器会说“没问题”,但文件格式实际上是错误的。
当您必须对文件格式执行功能测试时,这是一个普遍问题,并且文件格式不能通过您提供的输入完全重现。你如何处理这个案子?