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

时间:2013-05-21 07:52:24

标签: c# unit-testing microsoft-fakes

我正在尝试使用Microsoft Shims运行此单元测试,但它在Shims.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()

6 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

我也遇到过这个问题。值得庆幸的是,这里的其他答案帮助我解决了我的问题:

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

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

答案 4 :(得分:1)

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

这是应该做的。 Snapshot

答案 5 :(得分:0)

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