我有一个包含WebAPI项目和VS测试项目的解决方案。
我的测试使用RestSharp通过Url调用API,而不是实例化控制器并注入相关内容(上下文等)。
我的问题是,是否有一种方法可以告诉测试项目在测试运行开始时通过IIS Express启动Web项目?目前,我只能运行两个实例的VS,一个带有已启动调试的Web项目,另一个运行测试包。
我有一个包含WebAPI项目和VS测试项目的解决方案。
我的测试使用RestSharp通过Url调用API,而不是实例化控制器并注入相关内容(上下文等)。
我的问题是,是否有一种方法可以告诉测试项目在测试运行开始时通过IIS Express启动Web项目?目前,我只能运行两个实例的VS,一个带有已启动调试的Web项目,另一个运行测试包。
http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api
自主托管让您只需几行代码就能启动Web API服务器,您可以使您的测试在正确的位置启动此服务器。在大多数情况下,这应该与将服务托管在IIS Express中相同。但是有一些重要的区别。例如,您将无法使用一些您可能习惯的System.Web概念(如HttpContext.Current)。通过使用CTRL-F5
在发布非调试模式下运行您的 Web 服务或站点,使其独立于 Visual Studio 运行,并且您可以自由地从 VS 内部运行测试。
我知道这是一篇旧文章,但我刚刚面临了这个问题。如果有人阅读这篇文章,我可以提供更详细的回复。
简而言之,我创建了一个控制台应用程序,引用了单元测试程序集,通过反射和简单的菜单系统,您可以运行任何一个测试。
然后,我设置了多个启动项目,分别为Web项目和控制台项目。
我现在可以在同一个会话中调试单元测试和Web项目了。不需要附加到多个解决方案的进程。