Использование vsperfmon для получения покрытия кода для службы REST, работающей в IIS - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь получить показатели покрытия кода для службы ASP.NET REST (которая использует файл global.asax), работающей в IIS.Я выполнил следующие основные шаги:

  1. Установите переменную среды, используя "VSPerfClrEnv / globaltraceon" (затем перезагрузите компьютер) (я также попытался / globalsampleon)
  2. Инструмент DLL для кодапокрытие с помощью «vsinstr –coverage», и я делаю это для 5 DLL, которые меня интересуют
  3. Запустите профилировщик с помощью «VSPerfCmd / start: охват /output:cc.coverage / CS / user: Everyone»
  4. Запустите службу в IIS 10 1703, используйте диспетчер задач, чтобы записать PID для w3wp.exe
  5. Присоедините профилировщик к службе с помощью «VSPerfCmd / attach:»
  6. Запустите тестыиз Visual Studio '17 Enterprise Test Explorer для службы
  7. Использование «VSPerfCmd / detach»
  8. Использование «VSPerfCmd / shutdown»

Но затем, когда я открываюВ файле cc.coverage, который был создан, только одна или две библиотеки DLL (это не является согласованным) имеют результаты покрытия, и тесты абсолютно выполняли бы код во всех 5 библиотеках DLL.Я делаю что-то неправильно или пропускаю шаг?Спасибо!

1 Ответ

0 голосов
/ 17 июля 2019

Согласно https://blogs.msdn.microsoft.com/tfssetup/2015/08/13/steps-to-check-the-code-coverage-of-a-web-application-via-command-line/, вы должны выполнить команду iisreset /STOP до vsperfcmd /shutdown, после vsperfcmd /detach.Не уверен, является ли это основной причиной вашей проблемы или нет, но это может быть связано с тем, что кажется, что очистка буфера не происходит верно в вашем сценарии.Очистка буфера для каждого модуля необходима для того, чтобы вывести данные покрытия из сеанса - если все объекты не отключены должным образом, это может привести к тому, что буферы не смогут сбросить свои данные.

...