为了账号安全,请及时绑定邮箱和手机立即绑定

无法从.NET类库xUnit测试加载Npgsql

无法从.NET类库xUnit测试加载Npgsql

C#
慕田峪7331174 2021-05-18 17:30:02
我正在学习一些实体框架,并已开始围绕它编写一些测试用例。我遇到一个问题,即使我可以在.net应用程序本身中正常运行(并且程序集的版本相同),也无法在测试用例中加载程序集。我得到的错误:消息:System.IO.FileLoadException:无法加载文件或程序集“ Npgsql.EntityFrameworkCore.PostgreSQL,版本= 2.0.2.0,区域性=中性,PublicKeyToken = 5d8b90d52f46fda7”或其依赖项之一。无法验证强名签名。程序集可能已被篡改,或者已被延迟签名,但未使用正确的私钥完全签名。(来自HRESULT的异常:0x80131045)它可以在.net应用中使用我从让Windows窗体应用程序运行正常开始。这是针对本地postgres DB使用SimpleInjector,EF Core,Npgsql。我已经使它可以正常工作(数据库创建,迁移等),并且像这样加载了DataContext(我的DbContext):DbContextOptionsBuilder builder = new DbContextOptionsBuilder<DataContext>();DbContextOptions<DataContext> options = (DbContextOptions<DataContext>)builder.UseNpgsql(connectionString).Options;            return new DataContext(options,NLog.LogManager.GetCurrentClassLogger());我可以做一个简单的测试,从数据库中列出组织。当前这是在Form1中完成的。因此,进入测试(我遇到问题的地方)我向新的“测试”类库(EF Core,Npgsql等)添加了相同的依赖项。我也依赖EntityFrameworkTest项目,因此我可以引用其模型。我简化了测试用例(OrgDBTest),以便它尝试在其构造函数中创建上下文。我这样做是为了让我知道我的问题与SimpleInjector无关。我的期望是测试将运行,并在其构造函数中创建一个DbContext。但是,我无法加载程序集,因此无法创建DbContext ...,以便可以继续创建/播放测试。代码在这里(非常小):https : //github.com/scornflake/entityframework-learn但是很迷失,好像我在测试用例中所做的和在应用程序中所做的一样,但是程序集加载似乎有所不同。有任何想法吗?
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

我没有根本原因,但是从xUnit切换到NUnit可以使一切正常。我只能假定xUnit运行程序在程序集加载/安全性方面存在一些根本的差异(我希望我知道它是什么,但是我已经花了很多时间才能达到这一点!)


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信