Как отладить пользовательский тестовый адаптер в 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 а также Save3) При необходимости сохраните настройки, используя раскрывающийся список, чтобы этот параметр можно было проверить в системе контроля версий.

Если вы решите сохранить настройки, ваш файл настроек может выглядеть примерно так:

<?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

Другие вопросы по тегам