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

Профилирование в Visual Studio Community 2015

Сообщения в Интернете предлагают вам профилировать тесты в Visual Studio, щелкнув правой кнопкой мыши и выбрав "Test Test": http://adamprescott.net/2012/12/12/performance-profiling-for-unit-tests/ Но я вижу только "Run Test" и "Debug Test" для моих тестов NUnit, а также для xUnit.NET. Что мне не хватает для тестирования профилей? Это просто не поддерживается в версии сообщества, или мне не хватает какой-либо конфигурации или компонента?

(Казалось бы странным, если он не поддерживается в Сообществе, поскольку я могу профилировать исполняемые файлы в Сообществе и, таким образом, мог бы обойти эту проблему, создав исполняемый файл, который запускает тест, и его профиль. профилирующие тесты?)

Шаги для воспроизведения для NUnit: созданный новый проект библиотеки С# в Visual Studio Community 2015, вставленный содержимое http://nunit.org/index.php?p=quickStartSource&r=2.6.4 в новый файл, установил пакеты NuGet следующим образом:

<packages>
  <package id="NUnit" version="2.6.4" targetFramework="net452" />
  <package id="NUnit.Runners" version="2.6.4" targetFramework="net452" />
  <package id="NUnitTestAdapter" version="2.0.0" targetFramework="net452" />
</packages>

Даже перезапущена Visual Studio. Тесты отображаются в Test Explorer и могут запускаться, но в меню правой кнопки мыши нет опции "Проверка профиля". Также попробовали эквивалентные шаги для xUnit.net, но без радости.

4b9b3361

Ответ 1

Извините, что ответил на старый вопрос, но я подумал, что могу улучшить текущий ответ, каким образом мне удалось профилировать тест NUnit в VS Community 2015 ранее.

Профилирование NUnit Test Runner в качестве исполняемого файла

  • Убедитесь, что вы используете VS2015 как Администратор.
  • Нажмите Анализировать > Профилировщик производительности... на панели инструментов.
  • Выберите Мастер производительности и нажмите Начать.
  • Страница 1: В моем случае я хотел видеть распределения, поэтому я нажал распределение памяти .NET.
  • Страница 2: Оставьте параметр проверен и продолжен исполняемый файл (.EXE).
  • Страница 3: На этой странице вы должны определить исполняемый файл для запуска.

    Это будет тестовый бегун nunit3-console.exe для NUnit или любой эквивалент для вашей тестовой среды.

    • Каков полный путь к исполняемому файлу? C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe
    • Аргументы командной строки: bin\Debug\Test.dll --inprocess --test TestNamespace.TestClassName.Test_Method_Name
    • Рабочий каталог: \\MAC\Home\Documents\GitHub\ApplicationName\Test

Вам нужно будет заменить эти пути теми, которые имеют смысл для вашей системы. Переключатель --inprocess приводит к тому, что тесты выполняются встроенными в процесс NUnit. Без этого переключателя возникает дочерний процесс, и хотя профилировщик будет работать, вы просто будете профилировать nunit3-console.exe, а не свой собственный код.

  1. Страница 4: Нажмите Готово.

    Имейте в виду, что профилировщик будет генерировать файлы отчетов и сохранять их в рабочем каталоге. В моем случае, поскольку мой рабочий каталог был UNC-ресурсом, мне потребовалось выбрать путь к локальной папке для сохранения отчетов до начала профайлера.

    Окно терминала должно появиться на короткое время с выходом NNnit runner. Окно автоматически закрывается, поэтому, если вы видите вспышку красного текста, у вас не будет времени на чтение ошибки до ее исчезновения. Вы можете скопировать команду из Page 3 в командную строку для более неторопливого чтения.

  2. После запуска команды (независимо от того, выполнено это или нет), вы должны получить отчет, в котором вы можете отслеживать, сколько распределений вызвано вашим тестом.

К сожалению, выделения в небольшом тесте, вероятно, будут омрачены выделениями, вызванными самой NUnit.Framework. Я щелкнул, чтобы увидеть, есть ли способ исключить их из результатов, но не нашел способ сделать это, поэтому я просто проигнорировал их.

Если вы хотите профилировать другой тест, вы можете открыть Проводник производительности и щелкнуть правой кнопкой мыши nunit3-console.exe > Properties, чтобы изменить аргументы командной строки, а затем нажмите Actions > Start Profiling, чтобы обновить отчет.

Заключение

Это решение успешно профилирует результаты одного теста NUnit, но это утверждение содержит некоторые предостережения.

Было только незначительно менее неприятным, чем создание отдельного исполняемого файла для профиля, а тот факт, что выделения NUnit в отчете могут сделать его не стартером, если вам нужно сделать действительно чувствительное профилирование.

Может быть, кто-то, у кого больше опыта работы с VS 2015, может помочь мне улучшить этот ответ с некоторыми советами о том, как исключить DLL NUnit.Framework из отчета?

Ответ 2

Ответ, похоже, содержится в комментарии к странице Адама Прескотта, на которую ссылается в вопросе:

16 августа 2013 года в 16:57

К сожалению, для MSDN эта функция доступно только в выпусках Premium и Ultimate.

http://msdn.microsoft.com/en-us/library/ms182372.aspx

Ссылка в комментарии в настоящее время относится к версии Visual Studio 2015 года. версия 2010 года на странице ясно показывает, какие версии Visual Studio 2010 поддерживают профилирование. Страницы для версии 2012 и более поздних версий опускают четкое утверждение о том, какие версии поддерживают профилирование.

Ответ 3

Возможно профилировать тесты MSTest (также можно профилировать nunit/xunit с помощью тестовых адаптеров) с помощью vstest.console.exe

  • Выберите исполняемую программу в качестве цели из анализа → Профилировщик производительности
  • Укажите путь vstest.console.exe (обычно находится в C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow)
  • Укажите параметры <full path to test dll file>.dll /TestCaseFilter:"FullyQualifiedName~<namespace>.<test class>" в качестве параметров
  • Если вы используете nUnit или xUnit, укажите адаптер nunit test или xunit test, используя аргумент /TestAdapterPath для vstest.console.exe

Подробнее о том, как предоставить параметры vstest.exe