如何从NUnit测试中访问项目文件

Dar*_*mas 5 resharper nunit unit-testing

我有一些测试,我使用ReSharpers"从解决方案运行所有测试"功能.其中一个被测试的类依赖于与包含它的程序集相同的文件夹中的文件.此文件通过MSBuild复制到输出目录(将"复制到输出目录"设置为"始终复制").

问题:测试不是从正常的程序集输出目录运行,而是在我的用户配置文件中的某个临时位置运行.

因此,我真的不知道在哪里寻找文件 - 测试运行器不会在那里复制它.我可以强迫它吗?

Rom*_*man 8

NUnit网站建议在这种情况下使用Assembly.CodeBase属性,这会导致我需要的bin/debug.

"注意:如果您想要禁用卷影副本以访问与程序集相同的目录中的文件,您应该知道有其他选择.请考虑使用Assembly.Codebase属性而不是Assembly.Location."

.Location返回了Uri样式地址"file://// D:// Projects ...",所以我使用的实际代码是

string applicationDirectory = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).LocalPath;
Run Code Online (Sandbox Code Playgroud)


Sam*_*ack 4

听起来您正在运行测试并打开卷影复制选项。

转至 Resharper->Options 并选择“单元测试”选项卡(位于列表底部)。取消选中“正在测试卷影复制程序集”并重试。