运行 测试后 运行 没有调试的 ASP.NET 核心项目在 运行 测试前停止 运行 项目

Running tests after running a ASP.NET Core project without debugging stops running project before running tests

对于 Mac,Visual Studio 中可能不存在此功能,但我想我可以在这里问一下,看看我是否做错了什么。

我有一个 ASP.NET 核心 MVC 项目设置为启动项目。

我还有一组针对 .NET Core 2.0 的单元测试,它们使用 Selenium 来驱动 UI 测试。为了 运行 这些测试,我需要先 ASP.NET Core MVC 运行ning,然后才能 运行 否则它们会失败,因为应用程序不是 运行宁.

在 Visual Studio 的 PC 版本中,"Debug" 菜单中的 "Start without Debugging" 选项会按预期启动 Web 应用程序。我的浏览器打开我的应用程序。一旦我确认它是 运行ning,我就能够 运行 测试没有任何问题(通过测试浏览器)。

在 Visual Studio 的 Mac 版本中,"Debug" 菜单中的 "Start without Debugging" 选项按预期启动网络应用程序。我的浏览器打开我的应用程序。一旦我确认它是 运行ning,我就会尝试 运行 测试。测试执行 运行 但在它们 运行 之前,它会终止 运行ning 应用程序进程。由于该应用不再 运行ning,因此测试失败。

TL;DR:

我的解决方案:

以下是两个 VS 实例的步骤:

预期:测试在 PC 和 Mac 版本中均通过

实际:测试在 Mac 版本中失败,因为 Web 应用进程在测试 运行

之前被杀死

有人对我如何实现我想要实现的目标有什么建议吗?

查看 Visual Studio Mac 源代码有一个限制可以防止这种情况发生。 Visual Studio for Mac 跟踪它拥有的所有应用程序 运行 并且当您尝试 运行 单元测试时它会尝试关闭这些应用程序。

使用 Visual Studio 测试 Mac 7.1 当您 运行 测试时,会显示一个消息对话框 An application is already running and will have to be stopped. Do you want to continue?

在不更改代码的情况下,您只能解决此问题。

解决方法:

  1. 运行 用于 Mac 的 Visual Studio 的单独实例,并使用一个来启动您的 Web 应用程序,另一个用于 运行 测试。
  2. 在 运行.
  3. 时从测试本身启动 Web 应用程序
  4. 创建一个 运行 配置,运行 同时包含 Web 项目和单元测试项目。但是,您需要在单元测试中添加某种延迟,因为它们将与 Web 项目同时启动。

有关选项 3 的更多详细信息。要创建 运行 配置,请右键单击解决方案和 select 选项。然后在“解决方案选项”中的 运行 - 配置部分中创建一个 运行 配置。然后 select 它并检查 web 项目和单元测试项目。在状态栏中,您需要 运行 配置。如果您可以 运行 在 Visual Studio 中对 Mac 进行单元测试,这应该可行。可以将使用 NUnit 的单元测试项目设置为启动项目,运行将其运行 测试。