我在visual studio 2010中编写单元测试.
为了测试一些功能,我添加了一个带有testfiles的文件夹.
我需要以编程方式获取此文件夹,而不需要字符串中的硬路径.
该文件夹包含在 <projectDirectory>/TestFiles
我试过用AppDomain.CurrentDomain.BaseDirectory
.这只有在我用resharper运行我的单元测试时才有效.
结果是<projectDirectory>/bin/debug
这样我可以很容易地去TestFiles.
如果我使用visual studio运行测试,BaseDirectory是:
<sameFolderAsSolutionFile>\TestResults\<username>_<pcname> <datatime>\Out
我已将解决方案文件移至另一个文件夹.所以我的项目与我的解决方案文件不在同一个文件夹中.
例:
<sameFolderAsSolutionFile> = C:\SolutionFiles
<projectDirectory> = C:\Projects\MyProject
有人能告诉我如何在不使用硬编码字符串的情况下获取测试文件的路径吗?
编辑
我还没有找到解决方案.
Visual Studio正在使用另一个构建文件夹进行测试.因此,通常构建到bin文件夹中的所有内容都将构建到另一个文件夹中以进行测试.
我的TEMP-SOLUTION
我在我的测试项目中添加了一个App.config文件.在此配置文件中,我添加了一个包含测试文件所需路径的设置:
<appSettings>
<add key="TestFiles" value="C:\Projects\MyProject\TestFiles"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud) 我有一个测试项目,我需要加载一个XLSX文件.为此,我添加了一个带有copy-always的文件,以便它最终出现在build目录中,但以下所有内容都返回了错误的路径:
System.Reflection.Assembly.GetAssembly(typeof(testclass)).Location;
AppDomain.CurrentDomain.BaseDirectory
Directory.GetCurrentDirectory();
他们都给了我:
"C:\\Users\\username\\Documents\\visual-studio-projecten\\projectname\\TestResults\\username_ICT003 2012-06-20 12_07_06\\Out"
我需要
"C:\\Users\\username\\Documents\\visual-studio-projecten\\projectname\\TestProject\\bin\\Debug\\SupportFiles\\"
我该如何做到这一点?
我用
<Deployment>
<DeploymentItem filename="TestProject1\Config\" outputDirectory="TestConfig" /><br>
</Deployment>
Run Code Online (Sandbox Code Playgroud)
在Local.testsettings中将TestProject1\Config \下的所有文件复制到'TestRoot'\ TestConfig \,但它直接在Test'TestRoot'文件夹中复制文件.