2010-05-27 56 views
5

我有一些测试用ReSharper运行“从解决方案运行所有测试”功能。其中一个正在测试的类与包含它的程序集位于同一文件夹中的文件具有依赖性。该文件通过MSBuild复制到输出目录(将“复制到输出目录”设置为“始终复制”)。如何从NUnit测试中访问项目文件

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

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

回答

4

听起来就像您正在运行阴影复制选项打开的测试。

转到Resharper-> Options并选择Unit Testing选项卡(位于列表底部)。取消选中“正在测试的阴影复制组件”,然后重试。

+0

点:)谢谢了! – 2010-05-27 14:49:33

+0

非常好的答案,但影子复制是一个非常漂亮的功能,我发现。没有从夹具设置手动复制文件的任何替代方法? – Wernight 2011-08-05 07:24:28

6

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

”注意:如果您试图禁用卷影副本以访问与组件相同的目录中的文件,则应该意识到还有替代方法,请考虑使用Assembly.Codebase属性而不是Assembly.Location。 “

的.Location返回乌里风格地址 “文件://// d://项目......”,所以我用实际的代码是

string applicationDirectory = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).LocalPath; 
+0

你可以发布一个链接到你发现该报价的页面吗? – blachniet 2013-06-26 13:26:11

+0

这是他们的文档。当前版本的页面是[http://www.nunit.org/index.php?p=settingsDialog&r=2.6.1](http://www.nunit.org/index.php?p=settingsDialog&r=2.6。 1)。页的章节是“测试加载程序设置 - 高级”,详细信息“影子复制” – Roman 2013-08-06 14:28:43

+0

我有相同的结果有或没有阴影复制选项,所以我不得不去这个解决方案,并为我所有的测试文件建立一个绝对路径通过使用'Path.Combine(applicationDirectory,fileName)'。 – furier 2016-11-15 11:22:38