我在visual studio中有一个类库,它只是检查指定文件是否存在的方法。如果我只传递bin目录中存在的某个文本文件的文件名(没有完整路径),则可以通过识别它的存在来正常工作。
因此,如果myfile.txt位于bin目录中,File.Exists(“myfile.txt”)将起作用。
但是当我从执行此方法的NUnit GUI加载测试用例时,它无法读取该文件。可能是因为执行NUnit的bin目录与dll和myfile.txt所在的原始bin不同。如何在不使用硬编码完整路径的情况下在我的NUnit中解决这个问题?
答案 0 :(得分:2)
在测试中,传递一个相对路径到被测试类的方法。这样可以避免使用硬编码的完整路径,并且只要您的测试项目始终位于相对于源项目的相同位置,它就会起作用。
e.g。如果您的源设置如下:
\Solution\src\Project\bin\debug\myFile.txt
\Solution\test\TestProject\bin\debug\TestAssembly.dll
相对路径为@"..\..\..\..\Project\bin\debug\myfile.txt"
<强>更新强>
我不太清楚为什么你的测试是从一个临时文件夹运行的。我要么使用Resharper之类的测试运行器,要么按如下方式设置我的测试项目:
这样,您的测试将始终从bin\debug
运行(取决于您的构建的配置方式),因此您可以依赖项目始终位于相同的相对位置。