6

我有一个包含 WebAPI 项目和 VS 测试项目的解决方案。

我的测试通过 Url 使用 RestSharp 调用 API,而不是实例化控制器本身并注入东西(上下文等)。

我的问题,有没有办法告诉测试项目在测试运行开始时通过 IIS Express 启动 Web 项目?目前我只运行两个 VS 实例,一个带有已启动调试的 web 投影,另一个运行测试包

4

5 回答 5

5

如果您尝试同时调试测试和服务,请考虑这样做

  1. 启动以在 Visual Studio 中调试 Web 服务。
  2. 点击Debug-> Detach All。IIS Express 将继续运行。
  3. 设置断点并开始调试您的单元测试。
  4. (如果您不需要调试 Web 服务,请跳过此步骤)单击Debug-> Attach to Process。查找iisexpress.exe并附加。

但是,您在已分离的 Web 服务上丢失了“编辑并继续”。

于 2017-06-16T00:52:27.483 回答
3

我不建议使用网络对 Web API 进行单元测试。你对测试中潜在的脆弱性敞开心扉,你最终测试的不仅仅是服务本身。

但如果你真的必须这样做,也许是为了测试你的客户端可以与 API 交换信息,那么我建议你考虑自托管服务:

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

自托管让您只需几行代码即可为 Web API 启动服务器,并且您可以让您的测试在正确的位置启动该服务器。在大多数情况下,这应该与将服务托管在 IIS Express 中的行为相同。但是有一些重要的区别。例如,您将无法使用您可能习惯的某些 System.Web 概念(如 HttpContext.Current)。

更新:

我写了一篇关于测试 Web API 服务的博客文章,可能会有所帮助 - https://docs.microsoft.com/en-us/archive/blogs/youssefm/writing-tests-for-an-asp-net-web- api服务

希望有帮助。

于 2013-01-20T03:07:31.710 回答
2

在非调试版本中运行您的 Web 服务或站点,CTRL-F5使其独立于 Visual Studio 运行,您可以从 VS 内部自由运行测试

于 2019-07-31T11:14:20.793 回答
2

我知道这是一篇旧帖子,但我刚刚遇到了这个问题。如果/当有人读到这篇文章时,我可以提供更详细的回复。

简而言之..我创建了一个引用单元测试程序集的控制台应用程序,并通过反射和一个简单的菜单系统,您可以运行任何一个测试。

然后我将多个启动项目设置为 Web 项目和控制台项目。

然后我可以在同一个会话中按 F5 并调试单元测试和 Web 项目。无需附加到多个解决方案的过程。

于 2016-05-14T00:06:30.207 回答
0

我知道这已经很晚了,但我使用了这个解决方案:

启动两个 Visual Studio 实例。在一个 VS 中开始调试 API,然后在另一个 VS 中调试测试。

于 2020-09-26T17:45:53.850 回答