Visual Studio 2012伪造的UnitTestIsolation工具无法初始化

刚刚安装vs 2012更新2( http://www.microsoft.com/en-us/download/details.aspx?id=36833 ),所以我可以使用vs fakes / shims来测试一些难以测试的代码。 当我创建假assembly并且所有引用都按预期添加到unit testing项目中时,一切都编译得很好。 但是在任何测试中运行以下代码……

using (ShimsContext.Create()) { //Doesn't matter whats in here } 

引发以下exception……

 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test 

堆栈跟踪完全exception……

 Test 'Abot.Tests.Unit.Core.HapHyperLinkParserTest.HyperLinkParserTest.GetLinks_AreaTags_ReturnsLinks' failed: Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider() at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.CreateContext() at Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create() Core\HyperlinkParserTest.cs(59,0): at Abot.Tests.Unit.Core.HyperLinkParserTest.GetLinks_AreaTags_ReturnsLinks() 

一些笔记……

  • 我正在使用visual studio 2012 premium
  • 解决方案中的所有项目都以.net 4.0为目标
  • 我正在使用nunit进行测试框架
  • 尝试通过testdriven.net插件和nunit gui运行测试,但同样的错误。
  • 试图瞄准.net 4.5并得到同样的错误
  • 我没有使用Typemock或Ncrunch,他们没有安装
  • 我正在使用Moq但是将其从th中移除
  • 它没有绑定到特定的测试,我已经validation它在不同的测试文件和其他解决方案中都失败了。

马修是对的。 你必须使用vs test runner。

– 必须通过扩展管理器安装NUnit测试适配器0.94,这允许vs测试运行器运行nunit。

– 必须使用vs test explorer窗口来运行测试。

看起来测试运行包含正在运行的测试在上下文中,以使假货魔术发生。

此外,如果要从CI服务器运行测试,则需要从控制台执行VS Test Runner,并指定要使用nUnit discoverer扩展。

命令将是这样的:

 {ProgramFiles}\Microsoft Visual Studio\11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow>vstest.console.exe /inIsolation /UseVsixExtensions:true {testsPath} 

在debug下重置例外设置:

菜单调试 – >例外 – >全部重置。

通过在调试模式下取消选中更改exception设置后:

“当用户未处理此exception类型时中断”

这导致了这个问题。