UnitTestIsolationException:在Release / Debug模式下运行Shims测试时抛出exception

我试图使用Microsoft Shims.Context.Create();运行此unit testing,但它在Shims.Context.Create();抛出exceptionShims.Context.Create(); 方法。

环境: VS 2012,Win2K8 R2

 namespace MyShimsUnitTest { [TestClass] public class MyUnitTest { [TestMethod] public void GetCurrentYear() { using (Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create()) { // Some Logic... } } } } 

详细例外:

 Result Message: Test method MyShimsUnitTest.MyUnitTest.GetCurrentYear threw exception: Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test Result StackTrace: at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider() at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.CreateContext() at Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create() at MyShimsUnitTest.MyUnitTest.GetCurrentYear() 

Shims需要IntelliTrace探查器执行的运行时检测。 测试运行器负责设置CLR加载分析器所需的环境变量,以及提供分析器必须为Shims检测的类型列表。 当ShimRuntime无法找到并附加到它希望CLR已加载的IntelliTrace探查器时,抛出UnitTestIsolationException。

正如Jin-Wook之前提到的,当测试由未执行所需的探查器初始化的运行器执行时,会出现此问题。 测试资源管理器和vstest.console.exe是Visual Studio 2012附带的两个这样的运行程序。此时,Visual Studio测试运行程序在“遗留”模式下运行测试时不执行所需的分析器工具,当您拥有时a。为运行选择的.TTSTSETTINGS文件或强制传统模式的.RUNSETTINGS文件。

您可以使用支持Shims所需的探查器工具的第三方测试运行器。

我遇到过同样的问题。 我的问题的解决方案是从菜单中取消选中所选的.testsettings文件:TEST / Test Settings,以及选择测试设置文件上方的项目。

这可能是因为没有使用vs 2012的测试资源管理器。要使用填充程序,您应该只使用测试资源管理器运行测试。

如果为vs 2012安装适当的测试运行器,您可以使用其他测试框架(如Nunit或Xunit)与垫片。它可以从vs扩展管理器下载。

我也遇到过这个问题。 谢天谢地,这里的其他答案帮助我解决了我的问题:

我正在使用Resharper,当使用上下文菜单时,我注意到跑步者正在使用MSTest。 即使在测试资源管理器中找到测试并选择调试时,我也收到了相同的exception。

然后我进入了Resharpers的选项并在工具 – >unit testing – > MsTest我取消选中“启用MSTest支持”。 遗憾的是,这会禁用右键单击测试并点击运行/调试的选项,但是当从Test Explorer视图中选择调试时,它确实允许ShimsContext.Create()正常运行!

转到TestProject属性 – >在Debug部分下,选中“ENABLE NATIVE CODE DEBUGGING”复选框。

这是应该做的。 快照

我们看到我们的构建服务器Bamboo报告了这个错误。 它正在调用MSbuild 4.0任务。 该unit testing在开发人员的本地PC上运行良好。 我删除了这个竹子任务并创建了一个调用Visual Studio 2012的vstest.console的新任务。 测试现在通过,但Bamboo无法计算测试次数。 这是竹问题不是我的。