在同一解决方案中进行 WebAPI 应用程序和集成测试

WebAPI app and integration tests in same solution

我有一个 WebAPI 应用程序和一个用于通过 HTTP 调用 API 的应用程序的集成测试套件。目前我在 visual studio 2013 的一个实例中 运行 集成套件并在另一个实例中手动启动 WebAPI 应用程序,在 IIS Express 上 运行。

是否可以配置 VS2013,以便我可以在同一个解决方案中拥有测试套件和应用程序,并且只需 运行 测试套件(我正在使用 nunit 和 resharper 运行 ning) 它会在哪一点负责构建和启动网络应用程序?

您可以在 self-host 中配置 WebAPI。然后在您的测试夹具设置中,您将启动主机并在每次测试后将其拆除。然后,您所有的测试都将配置为命中本地托管的 API.

真不明白为什么VS不支持这个。这似乎是一个很常见的问题。

无论如何...我找到了一个(丑陋的)解决方法。

打开你的解决方案两次(也就是说,用同一个解决方案打开两个 VS 实例):

  • 第一场VS:
    • 运行 处于调试模式的 Web API 项目
  • 第二个:
    • 卸载 Web API 项目(测试必须在 运行 之前构建,如果 Web API 项目是 "loaded",则构建过程失败,因为输出dll 不能被覆盖 - 它们正在被其他人使用 window)
    • 运行单元测试! :)