Как отладить пользовательский тестовый адаптер в Visual Studio
Я работаю над настраиваемым тестовым адаптером для Visual Studio 2017. Как настроить Visual Studio для отладки тестового адаптера без необходимости использовать взлом, например, добавление Debugger.Launch()
в моем коде адаптера?
1 ответ
Инструмент для отладки дочерних процессов Microsoft
Установите Microsoft Power Process Debugging Power Tool, который был создан сотрудником Microsoft. Это позволяет настроить отладчик Visual Studio для подключения к дочерним процессам (именно так vstest.console.exe выполняет тесты)
После установки откройте свое решение и включите отладку дочерних процессов:
1) Перейдите в настройки отладки дочерних процессов в следующем расположении меню Visual Studio: Debug -> Other Debug Targets -> Child Process Debugging Settings...
2) Включить отладку дочерних процессов: true
а также Save
3) При необходимости сохраните настройки, используя раскрывающийся список, чтобы этот параметр можно было проверить в системе контроля версий.
Если вы решите сохранить настройки, ваш файл настроек может выглядеть примерно так:
<?xml version="1.0" encoding="utf-8"?>
<!-- EngineFilter Guid was found here: https://blogs.msdn.microsoft.com/martintracy/2006/05/16/debug-engine-guids/ -->
<ChildProcessDebuggingSettings IsEnabled="true" xmlns="http://schemas.microsoft.com/vstudio/ChildProcessDebuggingSettings/2014">
<DefaultRule Attach="false" />
<Rule IsEnabled="true" ProcessName="TE.ProcessHost.Managed.exe" EngineFilter="{92ef0900-2251-11d2-b72e-0000f87572ef}" />
<Rule IsEnabled="true" ProcessName="vstest.discoveryengine.exe" EngineFilter="{92ef0900-2251-11d2-b72e-0000f87572ef}" />
<Rule IsEnabled="true" ProcessName="vstest.discoveryengine.x86.exe" EngineFilter="{92ef0900-2251-11d2-b72e-0000f87572ef}" />
<Rule IsEnabled="true" ProcessName="vstest.executionengine.exe" EngineFilter="{92ef0900-2251-11d2-b72e-0000f87572ef}" />
<Rule IsEnabled="true" ProcessName="vstest.executionengine.x86.exe" EngineFilter="{92ef0900-2251-11d2-b72e-0000f87572ef}" />
</ChildProcessDebuggingSettings>
После того, как это будет настроено, вам просто нужно убедиться, что ваш проект настроен на отладку с помощью vstest.console.exe. Ключевым моментом здесь является обеспечение того, чтобы вы включили собственную / неуправляемую отладку, в противном случае инструмент отладки дочерних процессов не будет работать.
Новая система csproj
Редактировать или создать launchSettings.json
файл, похожий на этот:
{
"profiles": {
"DebugTestAdapter": {
"commandName": "Executable",
"executablePath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\IDE\\Extensions\\TestPlatform\\vstest.console.exe",
"commandLineArgs": "Tests.dll --ListTests --TestAdapterPath:.",
"workingDirectory": "C:\\Projects\\TestAdapter\\Tests\\bin\\Debug\\net46"
}
}
}
Измените свой файл csproj, чтобы он содержал следующее свойство, которое включало собственную отладку:
<PropertyGroup>
<EnableUnmanagedDebugging>true</EnableUnmanagedDebugging>
</PropertyGroup>
Старая система csproj
На странице свойств отладки вашего проекта установите следующие параметры:
Запустите внешнюю программу:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe
Аргументы командной строки:
Tests.dll --ListTests --TestAdapterPath:.
Рабочий каталог:
C:\Projects\TestAdapter\Tests\bin\Debug
Включить отладку собственного кода: установите это значение на true