Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何从NUnit测试访问项目文件_Unit Testing_Nunit_Resharper - Fatal编程技术网

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

Unit testing 如何从NUnit测试访问项目文件,unit-testing,nunit,resharper,Unit Testing,Nunit,Resharper,我有一些使用ReSharpers“从解决方案运行所有测试”功能运行的测试。其中一个被测试的类与包含该类的程序集所在文件夹中的文件具有依赖关系。此文件通过MSBuild复制到输出目录(将“复制到输出目录”设置为“始终复制”) 问题:测试不是从普通程序集输出目录运行的,而是从我的用户配置文件中的某个临时位置运行的 因此,我真的不知道在哪里查找该文件-测试运行程序不会将其复制到那里。我可以强制它吗?听起来您在运行测试时启用了卷影复制选项 转到Resharper->Options并选择UnitTesti

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

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


因此,我真的不知道在哪里查找该文件-测试运行程序不会将其复制到那里。我可以强制它吗?

听起来您在运行测试时启用了卷影复制选项


转到Resharper->Options并选择UnitTesting选项卡(位于列表底部的右侧)。取消选中“正在测试的卷影副本程序集”,然后重试。

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

注意:如果您想禁用阴影复制,以便访问与您的程序集相同的目录中的文件,您应该知道还有其他选择。请考虑使用Studio.CoDeBasic属性而不是Sistabor。 .Location返回了Uri样式的地址“file:////D://Projects …”,所以我使用的实际代码是

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

回答得很好,但我发现阴影复制是一个非常简洁的特性。没有从夹具设置中手动复制文件的其他方法吗?你能发布一个链接到找到该报价的页面吗?这是他们的文档。当前版本的页面为。页面章节是“测试加载程序设置-高级”,关于“卷影复制”的详细信息无论是否启用卷影复制选项,我都得到了相同的结果,因此我必须采用此解决方案,并使用
path.Combine(applicationDirectory,fileName)
为我的所有测试文件构建一个绝对路径。