我正在为 Visual Studio 2017 开发自定义测试适配器。如何配置 Visual Studio 以调试测试适配器,而无需使用诸如添加Debugger.Launch()
我的适配器代码之类的技巧?
问问题
614 次
1 回答
3
Microsoft 子进程调试电源工具
安装由Microsoft员工创建的Microsoft Child Process Debugging Power Tool 。这允许您将 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
于 2017-05-01T00:07:51.613 回答