【问题标题】:Creating File Just for the Sake on Unit Test创建文件只是为了单元测试
【发布时间】:2010-09-14 13:09:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: unit-testing


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          不要试图创建一个有效的 pdf 文件只是为了测试你是否有读或写权限。 KISS principle 适用...

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

            • 你不使用源代码控制吗?只需将文件放入其中,每个人都会始终获得相同的布局。这有什么问题?
            • 您可以将项目签出到不同的目录或驱动器。我有一个类似的问题,我只是让我的测试引用这样的路径:_path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName + "path";
            猜你喜欢
            • 2017-11-02
            • 2019-12-01
            • 1970-01-01
            • 2017-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多