22

我正在使用一个简单的概念验证 Fakes 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 测试资源管理器中运行,但不在:

  • nUnit GUI
  • nUnit 控制台
  • JetBrains 测试运行器 (dotCover OR Resharper)
  • TestDriven.net 测试运行器

在其中的每一个中,我都会收到以下错误:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:无法从 COR_PROFILER_PATH 和 COR_PROFILER 环境变量解析探查器路径

当我反映到该程序集时,它似乎正在寻找 Intellitrace,这是 VS Ultimate 独有的功能 - 我只安装了 Premium。

关于如何解决这个问题的任何建议(我们在构建服务器上使用 nUnit 运行器,所以这是使用 Fakes 的障碍)

4

3 回答 3

15

我认为您将无法使用除 MS Test 框架之外的任何东西来执行基于 MS Fakes 的测试。

我相信 MS Fakes 的工作方式会给 NUnit 等测试运行程序带来问题。究竟为什么会这样,我不知道,因为其他模拟框架(例如 TypeMock)在 NUnit 等中工作正常。但是 MS Fakes 有一些特定的东西,这使得它更难(如果不是不可能)运行除了质谱测试。无论如何,这是我的理论。

除非 NUnit、xUnit 等的作者添加了对 MS Fakes 的支持(或者有一个巧妙的解决方法),否则我认为你将不得不坚持使用 MS Test。

编辑:

看起来最新版本的NCrunch v2.5 确实适用于 MS Fakes。我在它的开发过程中尝试了测试版,并且可以确认使用 NCrunch 执行了 MS Fake 测试没有失败。

于 2013-10-15T15:37:58.980 回答
5

Fakes 仅适用于 Visual Studio 测试运行程序(AKA VStest.Console.exe)。甚至以前的 Microsoft MSTest 运行器也不支持它

于 2016-04-13T00:10:24.173 回答
1

我相信您的答案是使用以下命令之一:

VSTest.Console.exe UnitTests.dll /UseVsixExtensions

VSTest.Console.exe UnitTests.dll /TestAdapterPath:%LocalAppData%\Microsoft\VisualStudio\12.0\Extensions\<nunit test adapter installation folder>

这些命令将在开发机器上运行良好。如果您想在构建服务器上运行单元测试,请将 nunit 测试适配器文件夹复制到构建服务器并提及该路径。

于 2016-08-11T14:00:56.707 回答