hwc*_*rwe 20 c# directory unit-testing mstest visual-studio
我在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)
Fer*_*ero 11
即使这个问题已经得到解答,我也希望通过一个对我有用的解决方案做出贡献,就像其他人一样.您需要将文件复制到测试项目的bin目录中,在其属性中标记文件Copy to ouput directory ="Copy always",然后在测试中您可以使用以下代码读取文件:
var baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var testFile = Path.Combine(baseDir, "TestFiles", "file.txt");
var file = File.OpenRead(testFile))
Run Code Online (Sandbox Code Playgroud)