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

时间:2010-05-27 13:16:12

标签: unit-testing nunit resharper

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

问题:测试不是从普通的程序集输出目录运行,而是在我的用户配置文件中运行一些临时位置。

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:4)

听起来你在打开Shadow Copy选项时正在运行测试。

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