Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 仅仅为了单元测试而创建文件_Unit Testing - Fatal编程技术网

Unit testing 仅仅为了单元测试而创建文件

Unit testing 仅仅为了单元测试而创建文件,unit-testing,Unit Testing,这可能是一个有趣的问题。我需要测试,如果我可以成功地上传和获取PDF文件。这适用于基于文本的文件,但我只想检查PDF。为了运行这个单元测试,我需要一个PDF文件。有两种选择。我可以创建一个伪PDF文件并将其存储在某个文件夹中,然后读取该文件并将其保存到系统中。但是现在,我的单元测试依赖于PDF文件。因此,任何运行单元测试的人都必须拥有PDF文件,这有点糟糕 另一种方法是创建一个PDF文件。这没什么大不了的,因为我可以简单地创建一个扩展名为.pdf的虚拟文件,或者我甚至可以使用一些pdf第三方工具

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

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

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


你认为处理这个问题的最好办法是什么

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

将PDF文件与测试一起保存在参考资料目录中。您的测试应该尽可能简单,创建文件只是可能失败的又一点。

我认为最好尽可能多地处理“真实”对象。只有在处理测试数据集不可行的情况下,引入“mock”(在本例中,它不是确切的术语)对象才有帮助。我不认为在你的版本控制系统中放一个测试文件是一件大事,所以最好还是用它,而不是写很多可能导致其他bug和测试的代码


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

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

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

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


不要试图创建一个有效的pdf文件只是为了测试你是否有读写权限。应用程序…

您不使用源代码管理吗?只要把文件放进去,每个人都会得到相同的布局。有什么问题吗?您可以将项目签出到不同的目录或驱动器。我有一个类似的问题,我只是将我的测试引用设置为如下路径:_path=Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName+“path”;