在一些解决方案中,我们有ASP.NET/WCF Web项目和一个测试项目。一些测试使用http://localhost:port/...
在ASP.NET开发Web服务器上运行。在VS2010中,当ASP.NET/WCF Web项目正在调试时,测试运行程序可以运行测试,如果Web项目中有任何断点,调试器将中断执行。这似乎已在VS 2012中禁用/删除。
调试ASP.NET/WCF Web项目时(通过按F5或通过附加进程启动),“测试-〉运行”和“测试-〉调试”子菜单都被禁用。在VS2010中,只有“测试-〉调试”子菜单被禁用,而“测试-〉运行”子菜单仍被启用。我们使用这种方式轻松调试Web项目中的服务。有什么方法可以恢复该行为或解决方法吗?
在ASP.NET开发服务器上运行时调试似乎不适用于VS 2012,或者至少我不能让它工作。
7条答案
按热度按时间at0kjp5o1#
在VS 2013中,情况是一样的:当项目正在运行/调试时,运行/调试测试的选项是灰色的。这是一个耻辱,特别是对于像Web API这样的项目,通过HTTP调用API的测试(相对于创建Controller类的示例和规避任何网络流量)非常有用,因为它们更接近API的最终用户将体验到的。
作为一种解决方法,您可以在单独的VS示例中打开同一个解决方案,也可以创建一个具有相同项目的单独解决方案,专门用于测试。在第一个VS示例中调试,在第二个示例中运行测试。
rkkpypqq2#
如果您的解决方案中包含WCF应用程序和调用这些应用程序的测试,则可以通过调用 * 调试所有测试 * 或 * 调试所选测试 * 来使用这些测试调试应用程序,而不需要之前执行 * 开始调试(F5)*。
将解决方案配置为“多个启动项目”,并在所有操作中设置“无”,将WCF应用程序配置为“启动”操作“不打开页。等待请求”。使用此配置,如果选择“调试所有测试”或“调试所选测试”,则开发Web服务器将启动。
kmbjn2e33#
以下是调试单个单元测试沿着Web服务器的解决方法。它依赖于Debugging Multiple Processes(不包括MSVS Express):
1.启动Web服务器(非调试),记下其进程ID(IIsExpress图标-〉显示所有应用程序)
1.在测试中的第一行放置断点
1.开始调试单元测试,等待它在断点处停止。
1.调试-〉附加到进程,输入Web服务器进程ID
测试和服务器都在调试器中实时运行。
csbfibhn4#
最后我写了一个快速的addon。事实证明,像VS2012一样,VS2012测试运行程序也可以在Web项目调试时运行测试。只是菜单选项被禁用了。
wgxvkvu95#
试试这个:
1.在单元测试方法的第一行中放置断点。
1.开始调试单元测试。
1.一旦它到达单元测试的第一行,就启动需要运行的其他项目的新示例。
5jdjgkvh6#
这不是一个漂亮的解决方案,但它很有效。使用Azure DevOps TFS版本控制,创建当前项目的分支。在主项目在Visual Studio的第一个/原始示例中运行的同时,在另一个Visual Studio示例的另一个分支中打开项目的解决方案。然后,在第一个/主Visual Studio示例中运行Web项目。现在,从VisualStudio的另一个示例运行单元测试。
要使它们保持同步,可以从一个分支到另一个分支进行合并。
wfveoks07#
我还是在VS 2022上碰到了这个。
如果您有多个项目可以运行。尝试设置启动项目,并至少设置其中两个。(solution-〉right click)x1c 0d1x
如果有两个执行严修正在两柴模式中执行,VS也允许您启动公寓测试。
(我刚从我的项目中启动了两个aspnet api-s)