Unit testing UnitTestIsolationException:在ShimsContext.Create上调试单元测试

Unit testing UnitTestIsolationException:在ShimsContext.Create上调试单元测试,unit-testing,visual-studio-2012,.net-4.0,microsoft-fakes,shim,Unit Testing,Visual Studio 2012,.net 4.0,Microsoft Fakes,Shim,当我尝试调试单元测试时,我收到以下异常消息: UnitTestIsolation检测未能初始化。请重新启动 然后重新运行此测试 使用此堆栈跟踪: 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider() 在 Microsoft.QualityTools.Testing.Fakes.Shi

当我尝试调试单元测试时,我收到以下异常消息:

UnitTestIsolation检测未能初始化。请重新启动 然后重新运行此测试

使用此堆栈跟踪:

在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider() 在 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.CreateContext() 在Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create()中 Sample.Business.Tester.ProcessorManagerTest.Test\u first\u run\u ever()在 d:\Folder1\Sample.Business.Tester\ProcessorManager.cs:第62行

代码是:

var prc = new ProcessorManager(ProcessRepository,ProcessStatusRepository);
using (ShimsContext.Create())
{
    ShimDateTime.NowGet = () => new DateTime(2015, 10, 1);
    prc.Run();
}
异常将在
ShimsContext.Create()
处引发


我已经检查了,并尝试了所有步骤,但对我不起作用。我没有使用Nunit。

如果您的单元测试项目存在与赝品或垫片相关的问题,请执行以下操作:

  • 在引用中,删除以下DLL:
    • Microsoft.QualityTools.Testing.Fakes
    • Microsoft.VisualStudio.QualityTools.UnitTestFramework
    • System.4.0.0.0.赝品
    • mscorlib.4.0.0.0.赝品
  • 同样在“Fakes”文件夹中,删除以下文件:
    • mscorlib.fakes
    • 系统仿冒品
  • 添加DLL:
    • Microsoft.QualityTools.Testing.Fakes
    • Microsoft.VisualStudio.QualityTools.UnitTestFramework
  • 从以下源路径:
    C:\ProgramFiles(x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssembly

  • 右键单击“System.dll”并在上下文菜单中选择“添加伪程序集”
  • 清洁项目
  • 构建项目

  • 这里也有类似的错误。可以通过使用“Visual Studio安装程序”修复VS安装来解决此问题。VS Enterprise 2017 Version 15.6.6

    什么是“ProcessorManager”?@doobop您好,这是我创建的自定义类,错误出现在后面。当我尝试复制它时,它按预期工作(我使用VS 2013和.NET 4.6)。我无法轻松回到2012和.NET4.0,因此我没有明确尝试过。如果注释掉ProcessorManager,它是否仍然失败?如果你去掉构造函数和/或运行它呢?你能包括构造器吗?有时是自定义类中的某些内容导致以后的调用失败。@doobop感谢您的评论,它在这里的VS2013上也可以正常工作,问题是在VS2012中,我无法迁移它,因为我们有一个2012服务器生成器,这一点还不会改变。难以置信的是,我以前也遵循过同样的步骤,但我不记得了,但这确实解决了问题。