第 1 步:安装适配器
在您提供的链接中,创建了一个 VSIX 项目来安装适配器。在 VSIX 项目中,有一个选项(在 VSIX 选项卡中)可以在构建时将适配器自动部署到 VS Experimental 配置单元。
如果您使用的是vstest.console.exe,则不必这样做。
第 2 步:使用适配器运行测试
执行此操作并立即附加调试器的最简单方法是通过项目设置中的 Debug 选项卡。设置此项以启动外部程序,并且每当您在调试模式下运行它时,调试器都会附加到该程序。
如果你通过 VS 运行测试:
devenv.exe /rootsuffix Exp
如果您正在通过 vstest.console.exe 运行测试并且您没有在您的主 VS 上安装适配器:
vstest.console.exe dummy.project.with.tests.dll /TestAdapterPath:"TestAdapterBuildDirectory"
如果您通过 vstest.console.exe 运行测试并且您确实在您的主 VS 上安装了适配器:
vstest.console.exe dummy.project.with.tests.dll /UseVsixExtentions:true
第 3 步:将调试器附加到将运行适配器的所有进程
在 Visual Studio 中使用 Debug > Attach to Process 选项。
在 VS2013 中,大多数进程会在测试运行之间徘徊,因此您可以运行一次测试以启动进程,然后在再次运行测试之前附加到它们。在 VS2015 中,这些进程根本不会停留很长时间,因此您必须非常快速地附加到它们,或者为您的测试执行器添加一个大的睡眠时间以给您额外的时间来附加。
如果您已附加到正确的进程,并且您的测试适配器是用符号编译的,那么在适配器代码中的任何需要的位置添加断点应该没有问题。
需要附加的进程如下
VS2013
-
devenv.exe - VS 实例。您创建的任何 Test Container Discoverer 都将在此处运行。
-
vstest.discoveryengine.exe - 发现过程。这是任何 Test Discoverer 在发送测试容器后运行的地方。
-
vstest.executionengine.exe - 执行过程。这是在发送测试用例之后运行任何 Test Executors 的地方。因此,如果您想查看正在运行的测试,您需要附加此文件。
VS2015
其中一些进程仍然存在,但您还需要附加到多个进程,它们都称为TE.ProcessHost.Managed.exe。如果您不确定要附加到这些进程中的哪一个,请附加到所有进程。有些用于发现,有些用于执行,尽管执行过程会很快消失。
vstest.console.exe
这不使用 Test Discoverer 或 Test Container Discoverer。如果您连接到实际的控制台程序,您应该能够通过向 Test Executor 添加断点来检查正在运行的测试。如果这不起作用,我怀疑适配器根本没有运行,您应该更仔细地查看 /TestAdapterPath 和 /UseVsixExtensions 选项。