在你的测试中传递一个相对路径到被测试的类的方法。这样可以避免使用硬编码的完整路径,只要你的测试项目总是在相对于你的源项目的相同位置,它就可以工作。
例如如果你有你的源设置是这样的:
\Solution\src\Project\bin\debug\myFile.txt
\Solution\test\TestProject\bin\debug\TestAssembly.dll
的相对路径将是@"..\..\..\..\Project\bin\debug\myfile.txt"
更新
我不明白为什么你的测试是从一个临时文件夹中运行。我要么使用测试运行器(如Resharper),要么设置我的测试项目如下:
- 打开包含测试项目的项目属性。
- 转到调试选项卡和设置以下值:
- 启动外部程序:输入nunit.exe的位置,例如在我的电脑上安装到C:\ Program Files \ NUnit 2.5.5 \ bin \ net-2.0 \ nunit.exe。
- 命令行参数:输入包含您的测试的程序集名称,后跟run参数,例如TestProject.dll /运行。
- 将包含测试的项目设置为启动项目。
- 命中F5。
这样您的测试总是从bin\debug
运行(取决于您的构建配置),因此您可以依赖项目始终处于相同的相对位置。
如何确保测试项目与源项目相关。当我运行NUnit GUI时,它会复制dll并在临时文件夹中运行应用程序。 – helloworld 2011-04-17 07:52:36
@enableDeepak我不直接运行NUnit GUI,请参阅我的更新了解我的作用 – Graham 2011-04-17 10:48:44
@enableDeepak NUnit使用影子复制从临时文件夹运行以避免锁定dll。在NUnit2的早期版本中,这允许NUnit保持dll加载,但仍允许您重新编译。这可能不再需要,我认为有一个设置可以关闭它。检入NUnit GUI的选项。 – 2011-04-17 10:57:45