Resharper从不同的位置运行UnitTest

Roa*_*oar 48 resharper nunit unit-testing .net-assembly visual-studio-2012

当我使用Visual Studio运行单元测试时,它工作正常,因为它从所有程序集所在的项目目录运行.但是当我用resharper运行它时会出错

var services = Assembly.Load("SomeAssembly");
Run Code Online (Sandbox Code Playgroud)

有错误

无法加载文件或程序集"SomeAssembly"或其依赖项之一.该系统找不到指定的文件..

所以我试过了

var path = Assembly.GetExecutingAssembly().Location;
Run Code Online (Sandbox Code Playgroud)

而且它不是第一个项目.它的

C:\用户\*用户名*\应用程序数据\本地的\ Temp\TestResults\... \输出\

而且没有'SomeAssembly'.如何正确配置resharper或收集Visual Studio所有的程序集?

它发生在单元测试中但不适用于NUnit,任何想法?

tal*_*eth 44

Resharper shadow默认复制程序集以进行测试.如果关闭卷影复制,它将在bin文件夹中运行,测试应该通过. 以下是关闭它的一些说明.


mcd*_*don 26

在NUnit的Gui Test Runner设置的文档中,有关于卷影复制的以下注释

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

以下是使用Assembly.Codebase属性的示例

    private string AssemblyLocation()
    {
        var assembly = Assembly.GetExecutingAssembly();
        var codebase = new Uri(assembly.CodeBase);
        var path = codebase.LocalPath;
        return path;
    }
Run Code Online (Sandbox Code Playgroud)

  • 来自[TestContext.CurrentContext.TestDirectory](https://github.com/nunit/docs/wiki/TestContext#testdirectory).我现在在NUnit 3.0中使用它.我不知道TestContext.CurrentContext.TestDirectory有多远可用. (9认同)

小智 12

我有同样的问题,resharper测试运行器在C:\而实际构建的dll和解决方案在另一个驱动器上.解决方案是在resharper选项的MSTest设置页面中取消选中"Use Legacy Runner".