【问题标题】:Best practice for using test files/directory in Visual Studio 2010 C# test projects在 Visual Studio 2010 C# 测试项目中使用测试文件/目录的最佳实践
【发布时间】:2011-01-28 05:08:56
【问题描述】:

我在 Visual Studio 2010 解决方案中有一个测试项目,它测试另一个作为 FTP 实用程序的项目。测试项目需要在这里和那里 FTP 文件,所以我使用测试文件传递给实用程序方法并验证它是否已上传/存档/等。在我的测试项目中,我在它的根目录下有一个名为 TestFiles 的文件夹,其中有一个 .txt 文件。每当有人从源代码管理中签出解决方案并运行单元测试时,我都希望将它放在该文件夹中的文件被抓取并用于 FTP 单元测试的地方。

我尝试过使用它,以及构建后事件命令行的变体,但没有运气:

copy $(ProjectDir)TestFiles\Test.txt $(ProjectDir)Debug\bin\Test.txt

我真正想做的就是确保我可以为任何本地测试文件使用相对路径,这样无论我的团队中的某个人将项目签出到哪里(或者如果团队Foundation Server 运行自动构建并为我的项目触发单元测试)。

我目前正尝试像这样在我的单元测试中访问该文件,所以我只是从调试区域中获取它:

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

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

【问题讨论】:

    标签: c# visual-studio-2010 c#-4.0 build copy


    【解决方案1】:

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

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

    Have a read of a detailed description about how to do this.

    【讨论】:

    • 是否应该将文件存储在一个文件夹中以便更好地管理?
    • 这完全取决于你,伙计:: 个人喜好。
    【解决方案2】:
    【解决方案3】:

    在您的项目中包含该文件并将其属性设置为 Content 和 Copy If Newer。它将在调试和发布时复制到构建/运行目录。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • @Mercinn - 请参阅上面我的回答中的链接:)
      • 不。我上面的帖子只是关于 MSTest。 NUnit 会有类似的暗示,但不完全相同,因为它有 MSTest 特定的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多