创建文件只是为了单元测试的清醒

时间:2008-10-01 14:34:10

标签: unit-testing

这可能是一个有趣的问题。如果我能成功上传并获取PDF文件,我需要测试一下。这适用于基于文本的文件,但我只是想检查PDF。要运行此单元测试,我需要一个PDF文件。有几种选择。我可以创建一个虚拟PDF文件并将其存储在一些文件夹中并读取该文件并将文件保存到系统中。但现在,我的单元测试依赖于PDF文件。因此,运行单元测试的任何人都必须拥有有点不好的PDF文件。

另一种方法是创建一个PDF文件。这不是什么大问题因为我可以简单地创建一个带有.pdf扩展名的虚拟文件,或者我甚至可以使用一些PDF第三方工具来创建PDF文件。

另一种方法是将PDF文档作为嵌入资源嵌入,然后从程序集中提取。

您认为处理此问题的最佳方法是什么?

5 个答案:

答案 0 :(得分:7)

将包含测试的PDF文件保存在资源目录中。您的测试应该尽可能简单,创建文件只是可能失败的一点。

答案 1 :(得分:1)

我通常会在需要外部内容的边测试中添加一个真实文件。这样您就可以使用真实文件进行测试,并且可以轻松地将其替换为不同类型的内容测试。

答案 2 :(得分:1)

我认为尽可能多地处理“真实”对象会更好。引入“mock”(在这种情况下,它不是确切的术语)对象只有在处理测试数据集不可行时才有帮助。我不认为在您的版本控制系统中放置测试文件是一个大问题,所以最好不要使用它而不是编写大量可能导致其他错误和测试的代码。

使用非常接近预期平均文件的PDF。

答案 3 :(得分:1)

向资源添加pdf文件(或带有pdf扩展名的虚拟文件)是可行的方法。您能够通过测试单元的相对路径(例如.... \ bla \ foo.pdf)访问它。

并且不要尝试创建有效的pdf文件,以便测试您是否具有读取或写入访问权限。 KISS principle适用...

答案 4 :(得分:0)

我担心的是,如果我将文件放在不同的目录中..让我们说单元测试下的资源,那么我不需要文件的完整路径来访问它。我手动运行我的测试。此外,当我移动到另一台计算机并将我的解决方案放在具有不同名称的文件夹中时,该文件的路径变得混乱。

除非有某些方法可以从我的应用程序中访问项目的文件夹(应该有)。