c# - Microsoft.Fakes 不会在正常的单元测试上下文中运行

标签 c# visual-studio microsoft-fakes

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

  • n单元图形用户界面
  • n单元控制台
  • JetBrains 测试运行器(dotCover 或 Resharper)
  • TestDriven.net 测试运行器

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

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : Failed to resolve profiler path from COR_PROFILER_PATH and COR_PROFILER environment variables

当我查看那个程序集时,它似乎在寻找 Intellitrace,一个 VS Ultimate 独有的功能——我只安装了 Premium。

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

最佳答案

我认为您无法使用除 MS 测试框架之外的任何其他工具来执行基于 MS Fakes 的测试。

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

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

编辑:

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

关于c# - Microsoft.Fakes 不会在正常的单元测试上下文中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385037/

相关文章:

c# - 序列不包含元素

c# - 如何为自定义创建的类获取智能感知?

c# - 创 build 置表单

c++ - 有符号整数溢出、内在函数和未定义行为

c# - 控制台应用程序相互通信的推荐方式是什么?

c# - 事件源与原始源

c# - 插入、更新错误: Subquery returned more than 1 row in C#

c# - 在 TFS 构建服务器上运行单元测试 Fakes Framework |错误

c# - 我可以伪造 HttpContent.ReadAsAsync<T> 吗?

c# - 带有 Microsoft Fakes 的 Stub 或 Shim Process 类