Microsoft.Fakes不会在正常的unit testing上下文中运行
我正在使用一个简单的概念certificateFakes nUnit测试:
[Test] public void TestFakes() { using (var ctx = ShimsContext.Create()) { System.Fakes.ShimDateTime.NowGet = () => { return new DateTime(2000, 1, 1); }; Assert.That(DateTime.Now.Year, Is.EqualTo(2000)); } }
此测试在Visual Studio Test Explorer中运行,但不在以下位置运行:
- nUnit GUI
- nUnit控制台
- JetBrains测试跑步者(dotCover OR Resharper)
- TestDriven.net测试运行器
在每个中,我收到以下错误:
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:无法从COR_PROFILER_PATH和COR_PROFILER环境变量解析探查器路径
当我反思这个程序集时,似乎它正在寻找仅限VS Ultimate的Intellitracefunction – 我只安装了Premium。
有关如何解决此问题的任何建议(我们在构建服务器上使用nUnit runner,因此这是使用Fakes的阻止程序)
我不认为您将能够使用MS Test框架之外的任何其他方式执行基于MS Fakes的测试。
我相信MS Fakes的工作方式会给NUnit等测试跑者带来问题。 正是这种情况的原因,我不知道,因为其他模拟框架如TypeMock在NUnit中运行良好等等。但是MS Fakes有一些特定的东西使得它更难(如果不是不可能的话)运行除了MS测试。 无论如何,那是我的理论。
除非NUnit,xUnit等的作者添加对MS Fakes的支持(或者有一个狡猾的解决方法),否则我认为你必须坚持使用MS Test。
编辑:
看起来NCrunch v2.5的最新版本与MS Fakes一起使用。 我在开发期间尝试了测试版,并且可以确认使用NCrunch毫无疑问地执行了MS Fake测试。
Fakes仅适用于Visual Studio Test Runner(AKA VStest.Console.exe)。 甚至以前的Microsoft MSTest跑步者也不支持它 。
我相信你的答案是使用以下命令之一:
VSTest.Console.exe UnitTests.dll /UseVsixExtensions VSTest.Console.exe UnitTests.dll /TestAdapterPath:%LocalAppData%\Microsoft\VisualStudio\12.0\Extensions\
这些命令在dev机器上运行正常。 如果您想在构建服务器上运行unit testing,请复制nunit测试适配器文件夹以构建服务器并提及该路径。