首页 > 解决方案 > 如何从已发布的 Web 应用程序中使用 selenium 有效地运行 .net 核心单元测试

问题描述

我有一个 .NET Core v2.2 应用程序。我正在尝试启动基于单元测试项目(尝试使用 NUnit、xUnit)的 Selenium UI 测试。

测试可以从 VS(使用 TestExplorer)本地启动,也可以从本地启动的 .NET Core 2.2 应用程序启动。

目标是能够开始测试,一旦应用程序部署在 IIS 中,使用视图中的按钮。

我尝试过使用反射启动测试和实例化类,或者在命令行中将其作为进程启动(通过运行 nunit3-console.exe、dotnet test 或 vstest.console.exe)。

使用时

dotnet test {PathToTestDll} --filter "Name ~{testName}" --logger trx --results-directory {resultDir}

命令,我可以从 cmd 开始测试,但是在尝试打开已发布的站点时,我收到缺少 dll 的错误

无法加载文件或程序集“Microsoft.VisualStudio.Coverage.CoreLib.Net,版本=16.9.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”。该系统找不到指定的文件。
System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型。),这是 VS Enterprise 的一部分,我目前使用的是 VS Professional 2019 Version 16.9.1。

如果我尝试使用

nunit3-console.exe --test={testFullyQualifiedName} {PathToTestDll}

我因缺少 nunit.framework 包而收到另一个错误:

NUnit.Engine.NUnitEngineException :加载测试时驱动程序发生异常。
System.IO.FileNotFoundException:无法加载文件或程序集'nunit.framework,Version=3.12.0.0,Culture=neutral,PublicKeyToken=2638cd05610744eb'或其依赖项之一。该系统找不到指定的文件。
--NUnitEngineException
加载测试时驱动程序发生异常。)无论我是否在 nunit.framework 文件所在的目录中执行它(C:\Users{user}.nuget\packages\nunit{version}),或已发布项目的目录(在 C:\inetpub\wwwroot{projectName} 中的某处)。

现在使用反射时,在应用程序发布后,测试失败,同样的错误(javascript错误:无法在'Document'上执行'elementsFromPoint':提供的双精度值是非有限的。(会话信息:chrome = 88.0 .4324.190)),如果我没记错的话,这是一个 Selenium 错误,用于使用非唯一方式定位元素。对于每个测试。我已经检查过了,可以向你保证,事实并非如此。

到了这个时候,我已经接受了我在做某事,或者一切都错了,但无法确定是什么。

不得不说,我目前使用的是 NUnit3、chromedriver v88.0.4324.96、Selenium.WebDriver 3.141.0

标签: c#seleniumasp.net-corexunitnunit-3.0

解决方案


推荐阅读