Microsoft Fakes生成UnitTestIsolationException

时间:2013-12-19 16:28:34

标签: c# visual-studio-2012 microsoft-fakes

我编写了非常简单的单元测试项目来查看Microsoft Fakes的功能。我已经在系统组件上执行了菜单命令“Add Fakes Assembly”。

public static class Y2KChecker
{
    public static void Check()
    {
        if (DateTime.Now == new DateTime(2000, 1, 1))
            throw new ApplicationException("y2kbug!");
    }
}

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestYear()
    {
        using (ShimsContext.Create())
        {
            ShimDateTime.NowGet = () => new DateTime(2000, 1, 1);
            Y2KChecker.Check();
        }
    }
}

但是在使用(ShimContext.Create())时,我总是得到UnitTestIsolationException:

在探查器库“C:\ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ IntelliTrace \ 11.0.0 \ Microsoft.IntelliTrace.Profiler.11.0.0.dll”中由SetDetourProvider返回了意外错误。

我的Visual Studio 2012 Update 2也安装了Resharper。如何修复此异常?

5 个答案:

答案 0 :(得分:3)

截至2012年11月,您无法同时运行Resharper和MS Fakes。大约一年前提出了使其兼容的请求。

http://devnet.jetbrains.com/message/5470396?tstart=0

答案 1 :(得分:1)

到现在为止(2014年3月),您只能在Visual Studio Test Runner(vstest.console.exe)中运行使用MS Fakes的测试。当然你可以继续使用ReSharper,但它的测试跑步者无法运行你的测试。

答案 2 :(得分:0)

使用VS2012 + ReSharper时遇到同样的问题,我在没有ReSharper的情况下切换到VS2013并且工作正常。

我回到VS2012并尝试suspend ReSharper,但这并没有解决问题。

答案 3 :(得分:0)

就我而言,问题只发生在TeamCity。

我通过从MSTest切换到 VSTest 来解决。

答案 4 :(得分:0)

截至2017年10月,我能够通过Resharper运行测试,但在收集代码覆盖率时却无法运行