Подтвердить что ты не робот

Microsoft.Fakes не будет работать в обычных контекстах unit test

Я использую простой пробный тест 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 runner на наших серверах сборки, так что это блокиратор для использования подделок)

4b9b3361

Ответ 1

Я не думаю, что вы сможете выполнять тесты на основе MS Fakes, используя что-то другое, кроме MS Test framework.

Я считаю, что способ работы MS Fakes вызывает проблемы для тестовых участников, таких как NUnit. Именно поэтому я не знаю, так как другие издевательские рамки, такие как TypeMock, отлично работают в NUnit и т.д. Но есть нечто специфическое для MS Fakes, которые затрудняют (если не невозможно) работу с чем-то другим, кроме MS Test. Это моя теория в любом случае.

Если авторы NUnit, xUnit и т.д. не поддерживают поддержку MS Fakes (или есть хитрое обходное решение), я думаю, вам придется придерживаться теста MS.

EDIT:

Похоже, что последняя версия NCrunch v2.5 работает с MS Fakes. Я пробовал бета-версию во время ее разработки и могу подтвердить, что тесты MS Fake выполнялись без сбоев с помощью NCrunch.

Ответ 2

Подделки работают только с Visual Studio Test Runner (AKA VStest.Console.exe). Даже предыдущий бегун Microsoft MSTest не поддерживает его.

Ответ 3

Я считаю, что ваш ответ заключается в использовании одной из следующих команд:

VSTest.Console.exe UnitTests.dll /UseVsixExtensions

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

Эти команды будут отлично работать на машинах dev. Если вы хотите запустить модульные тесты на сервере сборки, скопируйте папку адаптера nunit для сборки сервера и укажите этот путь.