【问题标题】:Visual Studio 2013 custom Test Adapter: how to debug?Visual Studio 2013 自定义测试适配器:如何调试?
【发布时间】:2014-07-10 16:09:24
【问题描述】:

我正在编写自定义 Visual Studio Test Adapter,并且想知道:如何调试它?现在我正在执行以下步骤:

  1. 在我的适配器代码中添加了一些 logger.SendMessage() 日志行。
  2. 构建适配器
  3. 将上述步骤 2 中的 dll 复制到测试扩展文件夹 (Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions)
  4. 从控制台运行一些测试:vstest.console.exe dummy.project.with.tests.dll
  5. 查看日志输出

有没有办法在 VS2013 中调试我的测试适配器,因为它正在运行测试?

注意:我的研究发现 this post 中有一条评论说要使用 Debugger.Launch() - 但我不知道如何激活它来实现我想要的。

【问题讨论】:

    标签: c# visual-studio-extensions vs-unit-testing-framework


    【解决方案1】:

    第 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 DiscovererTest Container Discoverer。如果您连接到实际的控制台程序,您应该能够通过向 Test Executor 添加断点来检查正在运行的测试。如果这不起作用,我怀疑适配器根本没有运行,您应该更仔细地查看 /TestAdapterPath/UseVsixExtensions 选项。

    【讨论】:

      【解决方案2】:

      这方面的经验不多。与第 3 步相关,您还可以考虑从命令行安装(和卸载)测试适配器 VSIX 包,使用:

      REM install
      vsixinstaller /q "C:\Path\To\Your\Adapter\bin\Debug\YourAdapter.vsix"
      
      REM uninstall
      vsixinstaller /q /a /u:YourVsixManifestId
      

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多