c# - 如何从已发布的 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
解决方案
推荐阅读
- amazon-s3 - pyspark 在输出中写入大量较小的文件
- ajax - 传单标记重复,removeLayer 问题
- ruby-on-rails - Webpack 编译:部署生产时找不到模块“@babel/preset-env”
- javascript - unirest.post 不是函数
- c - 在 C 中移动当前堆栈帧
- microsoft-cognitive - 无法让语音 SDK 快速返回 LUIS 意图
- matrix - 是否可以在没有矩阵的情况下在 OpenGL ES 中使用纹理?
- c# - 下划线“_”自动更改为问号“?”
- vue.js - 为什么在 vuetify 中使用 v-carousel 时我的页面会刷新?
- wordpress - Woocommerce 税收设置价格未正确显示