UnitTestIsolationException: не удалось разрешить путь профилировщика из переменных среды COR_PROFILER_PATH и COR_PROFILER.

Я использую VS2015 с обновлением 3. У меня есть простой проект модульного тестирования hello world, в котором я пытаюсь получить shimContext , ниже приведен фрагмент кода. Я получаю исключение в shimContext для создания вызова: *

Ошибка Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException в Microsoft.QualityTools.Testing.Fakes.dll Дополнительная информация: не удалось разрешить путь профилировщика из переменных среды COR_PROFILER_PATH и COR_PROFILER.

*

 [TestClass]
    public class UnitTest1
    {

        private IDisposable shimsContext;

        [TestMethod]
        public void TestMethod1()
        {
            shimsContext = ShimsContext.Create();
            Assert.IsTrue(true);
        }
    }

Я просмотрел множество статей на StackOverflow, MSDN относительно предлагаемых обходных путей, и ни одна из них, похоже, не решает проблему. Ниже приведен список обходных путей, которые я пробовал.

  1. Использовать средство запуска модульных тестов, которое инициализирует IntelliTrace во время запуска (используемые два подключаемых модуля CodeRush и Resharper дают одинаковое исключение).
  2. Чтобы связать файл .runsettings с ForcedLegacyMode - True, это также привело к такому же исключению.
  3. Образец демонстрационного модульного теста, пытающегося создать shimsContext, был создан, чтобы проверить, изолирована ли проблема от среды.

  4. Запустите vstest.console.exe через командную строку, чтобы проверить, выполняются ли тесты в командной строке, это тоже дало такое же исключение.

Любые предложения/советы?

Спасибо - Кирти.


person Somu    schedule 27.09.2018    source источник
comment
Скачал VS2017 (Enterprise) и попробовал пример проекта unittest, здесь тоже такое же исключение.   -  person Somu    schedule 27.09.2018


Ответы (1)


Хорошо, после нескольких дней анализа, mscorlib.fakes пришлось обновить, чтобы иметь возможность преодолеть исключение, связанное с COR_PROFILER/UnitTestingIsolationException.

Ниже приведен снимок модифицированного файла mscorlib.fakes. Если вы заметили, что нам пришлось запретить фреймворку shims/stub генерировать заглушки для трассировки/профилирования, точная причина, по которой он не может генерироваться, до сих пор неясна, но после добавления этих строк в моем поддельном файле mscorlib создание shimsContext работает нормально.

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <StubGeneration>
    <Remove FullName="System.Diagnostics.Tracing"/>
    <Remove FullName="System.Text.Encoding"/>
    <Remove FullName="System.Security.Cryptography" />
  </StubGeneration>
</Fakes>
person Somu    schedule 29.10.2018
comment
Спасибо Рэйчел за статью, которая указала правильное направление. nwcadence.com/blog/ - person Somu; 29.10.2018
comment
Ссылка, предоставленная Somu, больше не активна - person str8ball; 07.06.2021
comment
Привет @str8ball, извините, пытался найти эту статью (ссылка, кажется, была перемещена), если похожая статья доступна в Интернете, но безуспешно. Но для меня обновление поддельного файла mscorlib, как было предложено выше, устранило эту проблему, дайте мне знать, если это сработает для вас. - person Somu; 09.06.2021
comment
Привет @Somu, спасибо за ответ. Я видел другие сообщения о манипулировании профилем фейков по разным причинам. Путь, которым я следую, - установить переменные среды в мою локальную папку (скопированную из Nuget). Часть, которую я не понял, заключается в том, почему он хочет найти указатель dll в реестре, а не в моей локальной папке. - person str8ball; 09.06.2021