Использование vsperfmon для получения покрытия кода для службы REST, работающей в IIS
Я пытаюсь получить показатели покрытия кода для службы ASP.NET REST (которая использует файл global.asax), работающей в IIS. Я выполнил следующие основные шаги:
- Установите переменную среды, используя "VSPerfClrEnv /globaltraceon" (затем перезагрузите компьютер) (я также пробовал /globalsampleon)
- Инструментируйте библиотеки DLL для покрытия кода, используя "vsinstr –coverage", и я делаю это для 5 библиотек, которые меня интересуют
- Запустите профилировщик, используя "VSPerfCmd /start: охват /output:cc.coverage /CS / пользователь: Все"
- Запустите службу в IIS 10 1703, используйте диспетчер задач, чтобы записать PID для w3wp.exe
- Присоедините профилировщик к сервису, используя "VSPerfCmd /attach:"
- Запускать тесты из Visual Studio '17 Enterprise Test Explorer для службы
- Используйте "VSPerfCmd /detach"
- Используйте "VSPerfCmd /shutdown"
Но затем, когда я открываю созданный файл cc.coverage, только одна или две из DLL (это не согласовано) имеют результаты покрытия, и тесты абсолютно выполняли бы код во всех 5 DLL. Я делаю что-то неправильно или пропускаю шаг? Спасибо!
0 ответов
Согласно 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
. Не уверен, является ли это основной причиной вашей проблемы или нет, но это может быть связано с тем, что, похоже, очистка буфера не происходит точно в вашем сценарии. Очистка буфера для каждого модуля требуется для того, чтобы получить данные о покрытии из сеанса - если все вещи не завершаются должным образом, это может привести к тому, что буферы не смогут очистить свои данные.