Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在调试web项目的同时运行测试?_Asp.net_Visual Studio_Visual Studio 2012 - Fatal编程技术网

Asp.net 如何在调试web项目的同时运行测试?

Asp.net 如何在调试web项目的同时运行测试?,asp.net,visual-studio,visual-studio-2012,Asp.net,Visual Studio,Visual Studio 2012,在一些解决方案中,我们有ASP.NET/WCF web项目和一个测试项目。一些测试使用ASP.NET开发web服务器运行http://localhost:port/...。在VS2010中,当调试ASP.NET/WCF web项目时,测试运行程序可以运行测试,如果web项目中存在任何断点,调试器将中断执行。这似乎已在VS2012中禁用/删除 调试ASP.NET/WCF web项目时(通过按F5或通过附加进程启动),测试->运行和测试->调试子菜单都将禁用。在VS2010中,只有测试->调试子菜单

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

调试ASP.NET/WCF web项目时(通过按F5或通过附加进程启动),测试->运行和测试->调试子菜单都将禁用。在VS2010中,只有测试->调试子菜单被禁用,而测试->运行子菜单仍处于启用状态。我们使用这种方式来轻松调试web项目中的服务。有没有办法恢复这种行为或解决问题


似乎不适用于VS2012,或者至少我无法让它工作。

我最后写了一篇简短的文章。事实证明,与VS2012一样,VS2012测试运行程序也可以在调试web项目时运行测试。只是菜单选项被禁用。

如果您有一个包含WCF应用程序和调用它们的测试的解决方案,您可以通过调用“调试所有测试”或“调试选定测试”来调试应用程序,而无需事先启动调试(F5)


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

在VS2013中,情况是相同的:在运行/调试项目时,运行/调试测试的选项将灰显。这是一个耻辱,尤其是对于像web API这样的项目,通过HTTP调用API的测试(与创建控制器类实例和绕过任何网络流量相反)非常有用,因为它们更接近API的最终用户将体验到的内容


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

这里有一个解决方法,可以调试单个单元测试和web服务器。它依赖于(不包括MSVS Express):

  • 启动web服务器(非调试),注意其进程id(IIsExpress图标->显示所有应用程序)
  • 在测试的第一行放置断点
  • 开始调试单元测试,等待它在断点处停止
  • 调试->附加到进程,输入web服务器进程id
  • 测试和服务器都在调试器中实时运行。

    请尝试以下操作:

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

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


    为了使它们保持同步,你可以从一个分支合并到另一个分支。

    @Robert,我认为标签不应该包括在问题中。此外,问题是“如何在调试web项目的同时运行测试”,而不是断点的功能。在VS2012中,测试根本无法运行。这就是为什么我要问这个问题。如果调试器正在运行且web项目正在调试,则无法运行测试。测试->运行和测试->调试下的所有菜单都被禁用。VS2010的情况并非如此。我们已经在多台机器和多个项目(转换为VS2012)上进行了尝试。当制作一个标题时,我会考虑它在谷歌中的外观。由于在Google中最流行的标签(本例中为ASP.NET)被附加到标题的开头,因此在标题的开头添加标签毫无意义。但是,如果标签能使它成为谷歌的一个更好的标题,标签就自然地出现在标题的中间或结尾。至于你的问题,你最好的做法可能是去掉你的类,这样单元测试就可以独立于ASP.NET应用程序在它们上运行。Visual Studio正确地认为,当您运行应用程序时,这就是测试。好吧,我们有几个这样的项目,我们才开始将它们转换为VS2012。由于它在VS2010中工作(正确的方式或错误的方式),我们希望它在VS2012中也能以同样的方式工作。这是一个好主意。不幸的是,当我尝试你的插件时,它无法加载,错误号为80004005。这是VS 2012终极版,更新2。感谢您的努力。我按照以下说明()在VS2013社区中运行了它。对我来说,没有错误消息,但是当使用“在上下文中运行所有测试”选项时,VS会要求停止调试,并且不会运行测试。在VStudio 2013中,我按照您所说的做了一些不同,首先调试测试,然后附加到进程,但实际上是一样的。