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