如何在调试Web项目的同时运行测试?

时间:2012-08-30 19:30:49

标签: asp.net visual-studio visual-studio-2012

在一些解决方案中,我们有ASP.NET / WCF Web项目和测试项目。某些测试使用http://localhost:port/...针对ASP.NET开发Web服务器运行。在VS2010中,当ASP.NET/WCF Web项目正在调试时,测试运行器可以运行测试,如果Web项目中有任何断点,调试器将中断执行。这似乎已在VS2012中被禁用/删除。

调试ASP.NET / WCF Web项目(通过按F5或通过附加进程启动)时,将禁用TEST-> Run和TEST-> Debug子菜单。在VS2010中,只有Test-> Debug子菜单被禁用,而Test-> Run子菜单仍然启用。我们使用这种方式轻松调试Web项目中的服务。有什么方法可以恢复或解决这个问题吗?

Debugging While Running on ASP.NET Development Server似乎不适用于VS2012,或者至少我无法使用它。

6 个答案:

答案 0 :(得分:12)

在VS2013中,情况是相同的:在运行/调试项目时,运行/调试测试的选项显示为灰色。这对于像web API这样的项目来说是一种耻辱,在这些项目中,通过HTTP调用API的测试(与创建Controller类的实例和绕过任何网络流量相反)非常有用,因为它们更接近于最终结果API的用户将体验。

作为一种解决方法,您可以在VS的单独实例中打开相同的解决方案,也可以使用相同的项目创建单独的解决方案,专门用于测试。在第一个VS实例中调试,在第二个VS实例中运行测试。

答案 1 :(得分:7)

如果您有一个WCF应用程序和测试调用它们的解决方案,您可以通过调用调试所有测试调试所选测试来使用测试调试应用程序开始调试(F5)

将解决方案配置为多个启动项目,并在所有操作中设置,并将WCF应用程序配置为启动操作不要打开页面。等待请求。使用此配置,如果选择调试所有测试调试所选测试,则启动开发Web服务器。

答案 2 :(得分:2)

我最后快速写了addon。事实证明,与VS2012一样,VS2012测试运行器也可以在调试Web项目时运行测试。只是菜单选项被禁用。

答案 3 :(得分:1)

以下是调试单个单元测试和Web服务器的解决方法。它依赖于Debugging Multiple Processes(不包括MSVS Express):

  1. 启动Web服务器(非调试),记下其进程ID(IIsExpress图标 - >显示所有应用程序)
  2. 在测试的第一行放置一个断点
  3. 开始退出单元测试,等待它在断点处停止。
  4. 调试 - >附加到流程,输入Web服务器进程ID
  5. 测试和服务器都在调试器中运行。

答案 4 :(得分:0)

尝试一下:

  1. 在单元测试方法的第一行中放置一个断点。
  2. 开始调试单元测试。
  3. 一旦它到达了单元测试的第一行,就启动一个您需要运行的其他项目的新实例。

答案 5 :(得分:0)

这不是一个很好的解决方案,但可以。使用Azure DevOps TFS版本控制,创建当前项目的分支。在主项目在Visual Studio的第一个/原始实例中运行的同时,在另一个分支中,在Visual Studio的另一个实例中打开项目的解决方案。然后,在第一个/主Visual Studio实例中运行Web项目。现在,从Visual Studio的另一个实例运行单元测试。瞧!

要使其保持同步,您可以从一个分支合并到另一个分支。