【发布时间】:2022-01-14 21:49:48
【问题描述】:
我正在尝试将 Specflow 与 Playwright 一起使用,以便在开发的门户应用程序上执行 BDD,但我遇到了一个小问题。
Specflow 项目是一个带有 ASP.Net 核心服务器的单独项目,它具有门户应用程序的 Api(它在 Vue 中)。由于测试指向特定的 URL(当前为 localhost),因此在运行测试之前,我需要在本地运行 ASP.Net core & Vue 项目。否则,Specflow & Playwright 将无法进行测试(因为它找不到本地主机)。
有什么方法可以强制运行 Web 服务器项目吗?我尝试使用 dotnet build 从 Visual Studio 外部运行它,然后使用 dotnet run 命令,但不知何故,它们缺少参数(从 VS 内部运行时存在)并且除了也就是说,在尝试运行测试时必须以某种方式触发这些命令。
我见过一些解决方案,例如从 Docker Compose 文件创建 Docker 映像,以便在运行 Specflow 测试之前在其中打包一个 .Net 项目和服务器。然后在 BeforeTestRun 钩子中使用 FluentDocker 来启动服务器,但我不太确定这是更简单(或最好)的解决方案。
有谁知道我如何触发运行 .net 核心项目(使用 Vue 页面)?
【问题讨论】:
-
如果您在 Windows 上,请安装 IIS(Internet 信息服务),它是一个 Web 服务器。安装 IIS 后,您需要在 IIS 中创建一个 Web 应用程序来托管 ASP.NET Core Web 应用程序。在运行测试之前,使用
dotnet publish发布 Web 应用程序。一些 PowerShell 脚本可以使这些步骤更容易,但不是必需的。 -
我终于找到了一个解决方案,可以使用 Kestrel 从命令行运行项目,然后像往常一样从 VS 内部运行测试用例。不允许从命令行运行 dotnetcore 在 IISExpress 中运行它们,因此它需要 Kestrel 的启动配置文件。
标签: visual-studio asp.net-core bdd specflow playwright