c# - Jenkins 在 C# 上使用 Access 数据库引擎构建用于 Selenium 测试,获取 Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册
问题描述
对于我的 selenium Nnuint 测试,Access 数据库引擎用于从 Excel 表中读取数据。虽然这些测试是从 Jenkins 运行的,但我收到以下错误消息。
Invalid : Automation_Smoke_Tests.CategoryExecution.CategorybaseExcetion
System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
----> System.InvalidOperationException : The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at NUnit.Framework.TestCaseSourceAttribute.GetTestCaseSource(IMethodInfo method) in C:\src\nunit\nunit\src\NUnitFramework\framework\Attributes\TestCaseSourceAttribute.cs:line 277
at NUnit.Framework.TestCaseSourceAttribute.GetTestCasesFor(IMethodInfo method) in C:\src\nunit\nunit\src\NUnitFramework\framework\Attributes\TestCaseSourceAttribute.cs:line 173
--InvalidOperationException
at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at LinqToExcel.Query.ExcelUtilities.GetWorksheetNames(ExcelQueryArgs args)
at LinqToExcel.ExcelQueryFactory.GetWorksheetNames()
解决方案
我现在实际上遇到了类似的问题。托管 Jenkins 服务器的机器似乎没有安装正确的访问引擎。
我发现我必须安装 2010 版本。这就是我感兴趣的地方。访问引擎有 2 个变体 - 常规版本和 x64 版本。我必须安装 NON x64 版本,这样我的测试才能在 Visual Studio 中本地运行,但要让它们在 Jenkins 中执行,我需要 x64 版本。
您应该可以在此处找到 2010 年的下载 - https://www.microsoft.com/en-us/download/details.aspx?id=13255。
推荐阅读
- kubernetes - 允许连接到 Kubernetes 集群之外
- python - 更新变量 Python 文件中的变量值
- javascript - 如何删除数组中的重复项并带来计数?
- algorithm - 在网格上填充瓷砖,以便所有未填充的瓷砖都可以到达
- shell - 将一个文本文件中的值附加到另一个文本文件
- css - 当我试图清除缓存时,我的 web css 无法正常工作
- pandas - 进程以退出代码 137 结束(被信号 9:SIGKILL 中断)
- flutter - 运行 XCode build.. 需要很长时间,如何查看发生了什么
- javascript - 如何在打字稿或 javascript 中将当前日期转换为日期数据类型
- leaflet - Leaflet 插件版本兼容