NUnit从源Bin读取文件

时间:2011-04-16 17:20:46

标签: nunit

我在visual studio中有一个类库,它只是检查指定文件是否存在的方法。如果我只传递bin目录中存在的某个文本文件的文件名(没有完整路径),则可以通过识别它的存在来正常工作。

因此,如果myfile.txt位于bin目录中,File.Exists(“myfile.txt”)将起作用。

但是当我从执行此方法的NUnit GUI加载测试用例时,它无法读取该文件。可能是因为执行NUnit的bin目录与dll和myfile.txt所在的原始bin不同。如何在不使用硬编码完整路径的情况下在我的NUnit中解决这个问题?

1 个答案:

答案 0 :(得分:2)

在测试中,传递一个相对路径到被测试类的方法。这样可以避免使用硬编码的完整路径,并且只要您的测试项目始终位于相对于源项目的相同位置,它就会起作用。

e.g。如果您的源设置如下:

\Solution\src\Project\bin\debug\myFile.txt
\Solution\test\TestProject\bin\debug\TestAssembly.dll

相对路径为@"..\..\..\..\Project\bin\debug\myfile.txt"

<强>更新

我不太清楚为什么你的测试是从一个临时文件夹运行的。我要么使用Resharper之类的测试运行器,要么按如下方式设置我的测试项目:

  1. 打开包含测试的项目的项目属性。
  2. 转到“调试”选项卡并设置以下值:
    • 启动外部程序:输入nunit.exe的位置,例如在我的电脑上,它已安装到C:\ Program Files \ NUnit 2.5.5 \ bin \ net-2.0 \ nunit.exe
    • 命令行参数:输入包含测试后跟run参数的程序集的名称,例如: TestProject.dll /运行
  3. 将包含测试的项目设置为StartUp Project。
  4. 点击F5。
  5. 这样,您的测试将始终从bin\debug运行(取决于您的构建的配置方式),因此您可以依赖项目始终位于相同的相对位置。