Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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
在Visual Studio 2010 C#测试项目中使用测试文件/目录的最佳实践_C#_Visual Studio 2010_C# 4.0_Build_Copy - Fatal编程技术网

在Visual Studio 2010 C#测试项目中使用测试文件/目录的最佳实践

在Visual Studio 2010 C#测试项目中使用测试文件/目录的最佳实践,c#,visual-studio-2010,c#-4.0,build,copy,C#,Visual Studio 2010,C# 4.0,Build,Copy,我在VisualStudio2010解决方案中有一个测试项目,它测试另一个FTP实用程序项目。测试项目需要到处FTP文件,因此我使用一个测试文件传递给实用程序方法,并验证它是否被上传/存档等。在我的测试项目中,我在它的根下有一个名为TestFiles的文件夹,其中有一个.txt文件。我希望无论何时有人从源代码管理中签出解决方案并运行单元测试,都能抓取该文件夹中的文件并在FTP单元测试中使用 我尝试过使用此命令行,以及构建后事件命令行中的变体,但没有成功: copy $(ProjectDir)Te

我在VisualStudio2010解决方案中有一个测试项目,它测试另一个FTP实用程序项目。测试项目需要到处FTP文件,因此我使用一个测试文件传递给实用程序方法,并验证它是否被上传/存档等。在我的测试项目中,我在它的根下有一个名为TestFiles的文件夹,其中有一个.txt文件。我希望无论何时有人从源代码管理中签出解决方案并运行单元测试,都能抓取该文件夹中的文件并在FTP单元测试中使用

我尝试过使用此命令行,以及构建后事件命令行中的变体,但没有成功:

copy $(ProjectDir)TestFiles\Test.txt $(ProjectDir)Debug\bin\Test.txt
我想做的就是确保我可以使用一个相对路径来测试任何本地测试文件,这样就保证了我的团队中的任何人都不会有问题。(或者Team Foundation Server运行一个自动化的构建并为我的项目启动单元测试)。 我目前正试图像这样在单元测试中访问该文件,因此我只需从调试区域获取它:

ftp.uploadThisFileSomewhere(
AppDomain.CurrentDomain.BaseDirectory + "\\TestFiles\\Test.txt");

那么,这是获取测试文件的正确方法吗?我不这么认为,但我似乎找不到一个好的最佳实践文档。如果足够好,如何复制/保证相对位置,无论项目在何处生成/运行

您可以使用DeploymentItemAttribute,。

将文件包含在项目中,并将其属性设置为内容,如果较新,则复制。它将在调试和发布时复制到build/run目录。

建议对MSTest过程中需要自动复制的每个项目使用DeploymentItem属性

从定义项目到确保每个文件都有正确的属性等等,都有很多步骤需要遵循。所以,我写了一系列关于如何做的说明


.

嗨,我遇到了同样的问题,我使用了资源。我在测试项目中创建了TestFiles.resx,然后添加了文件。在测试单元中,我使用了例如TestFiles.SomeFile,我能够忘记路径等等

@Mercinn-请参考我答案中的链接,上面:)不。我上面的帖子只是关于MSTest的。NUnit会有类似的含义,但与我的帖子不完全相同。。因为它有MSTest特定的内容。文件是否应该存储在单个文件夹中以便更好地管理?这完全取决于您,mate::personal preference。