【问题标题】:Running tests after running a ASP.NET Core project without debugging stops running project before running tests在运行 ASP.NET Core 项目后运行测试而不进行调试会在运行测试之前停止运行项目
【发布时间】:2018-01-10 08:45:54
【问题描述】:

这可能是 Visual Studio for Mac 中不存在的一个功能,但我想我可能会在这里询问我是否做错了什么。

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

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

在 PC 版本的 Visual Studio 中,“调试”菜单中的“启动而不调试”选项按预期启动 Web 应用。我的浏览器打开到我的应用程序。一旦我确认它正在运行,我就可以毫无问题地运行测试(通过测试资源管理器)。

在 Mac 版本的 Visual Studio 中,“调试”菜单中的“启动而不调试”选项按预期启动 Web 应用程序。我的浏览器打开到我的应用程序。一旦我确认它正在运行,我就会尝试运行测试。测试确实会运行,但在它们运行之前,它会终止正在运行的应用程序进程。由于应用不再运行,因此测试失败。

TL;DR:

我的解决方案:

  • ASP.NET Core MVC 项目
  • .NET Core 单元测试项目使用 Selenium

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

  • 点击“调试”(PC) 或“运行”(Mac)
  • 点击“不调试就开始”
  • 等待应用在浏览器中显示(不要关闭)
  • 转到测试资源管理器 (PC) 或单元测试 (Mac)
  • 运行 UI 测试套件

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

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

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

【问题讨论】:

    标签: asp.net asp.net-mvc visual-studio visual-studio-2017 visual-studio-mac


    【解决方案1】:

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

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

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

    解决方法:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2014-11-15
      • 1970-01-01
      • 2021-01-16
      • 2023-04-08
      相关资源
      最近更新 更多