【发布时间】:2014-04-29 00:51:58
【问题描述】:
我有一个包含 zip 函数的路径库,在编写单元测试时,我试图找到验证 zip 函数是否正常工作的最佳方法。
有人可以告诉我验证 zip 功能是否正常工作的最佳方法吗?
我能想到的几种方法是:
- 将生成的 zip 文件的 md5 与示例 zip 文件进行比较
- 列出 zip 文件的内容并确保内容正确
但是,这两种方式似乎有点啰嗦,我猜这不是惯用的 Elixir。有人可以告诉我一个更好的方法吗?
【问题讨论】:
我有一个包含 zip 函数的路径库,在编写单元测试时,我试图找到验证 zip 函数是否正常工作的最佳方法。
有人可以告诉我验证 zip 功能是否正常工作的最佳方法吗?
我能想到的几种方法是:
但是,这两种方式似乎有点啰嗦,我猜这不是惯用的 Elixir。有人可以告诉我一个更好的方法吗?
【问题讨论】:
我将创建一个测试文件目录以在您的单元测试中压缩,使用受信任的实用程序将其压缩并获取生成的 md5。然后为您的单元测试,执行 zip 功能,获取 md5,并与您验证的 md5 进行比较。
【讨论】:
System.cmd("zip -T <filename>")
如果我是正确的,有一些参数会影响 zip 处理的结果(如块大小)。因此,除非您的目的是彻底检查您的 zip 过程是否再现了所有或部分 zip 功能,否则我发现验证系统中的各种文件(或/和一些随机文件)是否可以使用您的功能压缩更有趣,并在外面使用不同的解压工具解压,最后对比一下文件是否与原文件相同。 (当然这需要更多时间,但可以轻松实现自动化)。
关于使用MD5而不是文件比较,我认为一方面文件比较容易编写,另一方面你需要读取整个文件来计算MD5,所以我认为不是值得使用这个技巧来加速比较 - (特别是如果文件不同:o)。
【讨论】: